如何从第3 /第4 /第5片段返回根片段?

时间:2017-05-31 09:07:26

标签: android fragment

我有堆栈中的碎片,如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:不活动,断开与服务的连接

2 个答案:

答案 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);