使用 switch 语句处理片段中的 onBackPressed()

using switch statement to handle onBackPressed() in fragments

我正在尝试为每个片段处理不同的 onBackPressed。为此,我想使用一个 switch 语句,其中的案例取决于当前显示的片段。 在我的主要我有。但不知道在 switch 语句中使用什么。

public class MyActivity extends Activity
{
    @Override
    public void onBackPressed(){
        super.onBackPressed();
switch(........){
        case (1):
        Fragment1.onBackPressed();
        case (2):
        Fragment2.onBackPressed();
    }
}

在我的片段中:

public class Fragment1 extends Fragment
{
    //My created method
    public static void onBackPressed()
    {
        // make it do what you want.
    }
}

所以我的问题是,我如何使用 switchstament,其中 de cases 取决于此时显示的片段。

onBackPressed()。您可以检查当前可见 Fragment

public class MyActivity extends Activity
{
    @Override
    public void onBackPressed(){
        if(yourFragment1.isVisible()) {
           ...
        }else if(yourFragment2.isVisible(){
           ...
        }
    }
}

不要在 activity 的单个 onBackpressed 中使用这样的开关,但你可以获取每个片段对象的键事件并这样做,

fragment.getView().setFocusableInTouchMode(true); //Don't miss this line
fragment.getView().setOnKeyListener( new OnKeyListener()
{
    @Override
    public boolean onKey( View v, int keyCode, KeyEvent event )
    {
        if( keyCode == KeyEvent.KEYCODE_BACK )
        {
           //Do what you want
            return true;
        }
        return false;
    }
} );