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

Android 如何从3/4/5片段返回到根片段?,android,fragment,Android,Fragment,我在堆栈中有像主框架-->A框架-->B框架-->C框架-->D框架这样的片段 如何从A,B,C,D片段中的任何一个返回到主片段。例如:若我点击了D中的按钮,我应该回到主片段。在片段C上单击按钮的情况下也会发生同样的情况。在主片段上单击后退按钮时,不应返回到片段D或C 我试图从堆栈中弹出所有片段&从主片段重新开始。但它不起作用 private void onButtonClick(){ MainFragment mainFrag= new MainFragment(); get

我在堆栈中有像主框架-->A框架-->B框架-->C框架-->D框架这样的片段

如何从A,B,C,D片段中的任何一个返回到主片段。例如:若我点击了D中的按钮,我应该回到主片段。在片段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();
}
编辑:好的,看起来上面的代码回到了主片段。但在显示主片段一秒钟后,应用程序将最小化。主片段最小化后,以下日志显示在Android logcat上

V/FA:屏幕暴露时间小于1000毫秒。未发送事件。时间:570

V/FA:活动已暂停,时间:14995077

V/FA:不活动,与服务断开连接


如果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));
  }

希望能对你有所帮助~

检查一下这个答案。谢谢你的回答。但我还想在切换片段之前清除backbackback。这样我就不用再去上一个背压片段了。所以,我使用了FragmentManager.POP\u BACK\u STACK\u。但它正在最小化应用程序。知道如何防止返回到上一个片段吗?如果我想防止返回到上一个片段,我将删除这个代码
transaction.addToBackStack(null)在我的switchFragment方法上。希望它仍然可以帮助你。
private void onButtonClick(){
    (MainActivity)getActivity()).switchFragment(new the fragment));
  }