我有堆栈中的碎片,如Main frag - >碎片 - > B frag - > C frag - > D frag。
如何从A,B,C,D片段中的任何一个返回主片段。例如:如果我点击D中的按钮,我应该回到Main片段。如果按钮单击片段C,也会发生同样的情况。然后,在主片段上单击后退按钮时,它不应返回片段D或C.
我试图从堆栈中弹出所有片段&从主片段开始。但它不起作用。
private void onButtonClick(){
MainFragment mainFrag= new MainFragment();
getActivity().getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);//pop back stack inclusive pops all fragment
getActivity().getSupportFragmentManager().beginTransaction().add(R.id.mainFragment, mainFragment).addToBackStack(null).commit();
}
编辑:好的,看起来上面的代码会回到主片段。但在显示Main片段一秒后,应用程序最小化。主片段最小化后,在log logcat上显示以下日志。
V / FA:屏幕曝光时间小于1000毫秒。事件未发送。时间:570
V / FA:活动暂停,时间:14995077
V / FA:不活动,断开与服务的连接
答案 0 :(得分:1)
如果MainActivity是您的frameLayout
地方,请接着回答:
//just add a switch method on your activity
public void switchFragment(Fragment fragment) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.mainFrame, fragment, null);
transaction.addToBackStack(null);
transaction.commit();
}
并在按钮的任何片段中使用它,如下所示:
private void onButtonClick(){
(MainActivity)getActivity()).switchFragment(new the fragment));
}
希望它可以帮助〜
答案 1 :(得分:0)
getSupportFragmentManager().popBackStackImmediate(mainFragment.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);