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