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();
}
}
这里详细描述了这种模式