Android fragments 后退按钮按片段处理
我正在开发一个使用导航抽屉的应用程序,所以我必须使用片段来使用抽屉进行导航。我的问题是我处于一个特定的片段中,当我按下手机中的硬件后退按钮时,它应该会退出应用程序。我已经实现了如下Android fragments 后退按钮按片段处理,android-fragments,back,Android Fragments,Back,我正在开发一个使用导航抽屉的应用程序,所以我必须使用片段来使用抽屉进行导航。我的问题是我处于一个特定的片段中,当我按下手机中的硬件后退按钮时,它应该会退出应用程序。我已经实现了如下 rootView.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View arg0, int keyCode, KeyEvent event) { // TODO A
rootView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK){
if(getFragmentManager().getBackStackEntryCount()>0){
getActivity().finishAffinity();
//return true;
}
else{
getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
/* getActivity().finishAffinity();
getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
*/
return true;
}
else{
return false;
}
}
});
在这里,我可以成功退出应用程序,但当我通过单击图标再次启动应用程序时,它会检查用户是否已经登录到应用程序,如果已经登录,则会重定向到我以前所在的片段。当我再次按下后退按钮时,它不会退出应用程序。。。它将转到登录活动。。。我怎样才能克服这个问题呢?我已经很晚了。但如果您还没有弄明白这一点,那么最好的办法就是构建您的应用程序,使back button press事件从活动片段传播到主机活动。所以,就像。。如果其中一个活动片段消耗了back press,那么活动将无法对其进行操作,反之亦然 一种方法是让所有片段扩展一个具有抽象“boolean onBackPressed()”方法的基本片段 跟踪活动中的活动片段,并在其内部写下如下内容
@覆盖
public void onBackPressed(){
如果(!activeFragment.onBackPressed())
super.onBackPressed();
}
}
这里详细描述了这种模式