Android 处理碎片期间的后退按钮键

Android 处理碎片期间的后退按钮键,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,实际上,问题是我只是从导航抽屉中加载一个片段(让调用为Fragment-a),现在Fragment-a调用一个虚拟活动,虚拟活动加载aFragment-B,而Fragment-B调用aFragment-C,Fragment-C调用Fragment-D 上面的整体图片: Fragment-A(调用)--->虚拟活动(加载)--->Fragment-B(调用)--->Fragment-C(调用)--->Fragment-D(调用) 现在我有一些问题: 实际上,片段D中有一个按钮,当按钮被调用时,我

实际上,问题是我只是从导航抽屉中加载一个片段(让调用为Fragment-a),现在Fragment-a调用一个虚拟活动,虚拟活动加载aFragment-B,而Fragment-B调用aFragment-C,Fragment-C调用Fragment-D

上面的整体图片:

Fragment-A(调用)--->虚拟活动(加载)--->Fragment-B(调用)--->Fragment-C(调用)--->Fragment-D(调用)

现在我有一些问题:

  • 实际上,片段D中有一个按钮,当按钮被调用时,我必须返回片段A
  • 现在,在碎片(B、C和D)加载过程中,我必须处理背面按下的
    。。
    表示如果用户在片段D中而不是在后按,则加载片段C,反之亦然,但当用户在片段B上时,调用
    在后按
    键而不是加载片段A
注意:

  • 我必须处理上键或系统键

  • 我知道我必须维护片段堆栈,但如何才能通过案例1

编辑:
  • 实际上,片段A是活动-(A)的一部分,而剩余的片段(B,C&D)是活动-(X)的一部分
代码:
回购链接:

上述情况可通过以下方式解决

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            onBackPressed();
        }
        return super.onOptionsItemSelected(item);
    }


 @Override
    public void onBackPressed() {
        finish();
    }
如果片段D中的按钮被调用,请调用函数 getActivity().onbackpress();
它将完成当前活动。

您需要在backstack中添加片段,如下所示:-

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.content_frame, fragmentA);
//No need to put fragment A in backstack


ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.content_frame, fragmentB);
ft.addToBackStack(null);


ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.content_frame, fragmentC);
ft.addToBackStack(null);

ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.content_frame, fragmentD);
ft.addToBackStack(null);
ft.commit();
现在,所有的片段都在Backback中,所以如果你在fragmentD上按Back,那么fragmentC将显示,在fragmentC中按Back,fragmentB将显示,在fragmentB中按Back,fragmentA将显示

正如您提到的,您在fragmentD中有一个特殊的按钮,按下该按钮时,您将看到片段a,因此单击该按钮执行以下代码:-

FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {    
    fm.popBackStack();
}
FragmentManager fm=getActivity().getSupportFragmentManager();
对于(int i=0;i
现在我明白你的意思了。。。bt在我的问题中有一点更新(所以请检查一下,先生)。。。不管怎样,它正在工作。。。但我有一个小问题,我必须管理片段菜单返回按钮,请在github中发布代码并共享链接@DhruvTyagi@DhruvTyagi请检查此重复,我检查了,但问题仍然存在,当第二个活动->>第二个片段加载时,我们按back键,因此理想情况下,它会转到第二个活动,第一个片段,但它转到1活动第二个片段