我试图为每个片段处理不同的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案件取决于此时片段的显示。
答案 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;
}
} );