Android-OnBackpress与碎片和碎片活动有关的问题

Android-OnBackpress与碎片和碎片活动有关的问题,android,android-fragments,Android,Android Fragments,我对Android上的物理后退按钮有一个问题。 我想允许使用back按钮,但仅从activity#2开始,它是一个片段,从那里开始,我只想允许back按钮返回到上一个片段 以下是我的布局/工作流程: (#1)活动->(#2)片段活动->(#3)列表片段->(#4)片段 活动(从意向x打开下一个活动=新意向(参数);)-> FragmentActivity(onBackPressed在此处被禁用。此处还添加了选项卡,并且此FragmentActivity具有一个内部类,该类实现ActionBar.

我对Android上的物理后退按钮有一个问题。 我想允许使用back按钮,但仅从activity#2开始,它是一个片段,从那里开始,我只想允许back按钮返回到上一个片段

以下是我的布局/工作流程:

(#1)活动->(#2)片段活动->(#3)列表片段->(#4)片段

  • 活动(从意向x打开下一个活动=新意向(参数);)->
  • FragmentActivity(onBackPressed在此处被禁用。此处还添加了选项卡,并且此FragmentActivity具有一个内部类,该类实现ActionBar.TabListener以处理OnAbsSelected FragmentTransaction.replace)->
  • ListFragment(FragmentTransaction不执行transaction.replace(args).addToBackStack(null.commit();)->
  • 片段(希望在此处使用物理后退按钮,但似乎未启用)
  • 当FragmentActivity(#2)未禁用onBackPressed方法时,在FragmentActivity之后的任何位置按下back按钮都会将应用程序返回到活动(#1),而不是上一个片段

    所以问题是,如何启用onBackPressed only from FragmentActivity(#2)并只返回到同一选项卡中的上一个片段


    谢谢。

    不确定这是否有效,但请尝试以下方法:

    @Override
    public void onBackPressed() {
        FragmentManager fm = getSupportFragmentManager();
        Log.d("length out", "" + fm.getBackStackEntryCount());
        if (fm.getBackStackEntryCount() > 2) {
            //do nothing you are on other fragments according to your work flow
        } else {
            // you are in your activity two or one so pop the fragment
            fm.popBackStack();
        }
    
    }
    

    您是否在片段事务上启用了addtobackstack。ListFragment(FragmentTransaction做transaction.replace(args.addToBackStack(null.commit();)兄弟,如果你住得离我很近,我今天就请你吃午饭。这很有魅力。塔克斯!谢谢,我是尼泊尔人,你为什么不来这里度假呢