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

时间:2016-03-11 08:27:03

标签: java android switch-statement onbackpressed

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

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.
    }
}

所以我的问题是,我怎么能使用一个开关,其中de案件取决于此时片段的显示。

2 个答案:

答案 0 :(得分:0)

onBackPressed()上。您可以查看当前可见的Fragment

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

答案 1 :(得分:0)

请勿在单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;
    }
} );