我在堆栈中有 fragment ,如 Main frag --> A frag --> B frag --> C frag --> D frag。
如何从 A、B、C、D fragment 返回主 fragment 。例如:如果我点击 D 中的按钮,我应该回到主 fragment 。在 fragment C 上单击按钮时也会发生同样的情况。并且,在从主 fragment 单击后退按钮时,它不应返回到 fragment D 或 C。
我试图从堆栈中弹出所有 fragment 并从主 fragment 重新开始。但它不起作用。
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();
}
编辑:好的,看起来上面的代码正在返回到主要 fragment 。但是在显示 Main fragment 一秒钟后,应用程序最小化了。主 fragment 最小化后,Android logcat 上显示以下日志。
V/FA: Screen exposed for less than 1000 ms. Event not sent. time: 570
V/FA: Activity paused, time: 14995077
V/FA: Inactivity, disconnecting from the service
最佳答案
如果 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();
}
并像这样在您的按钮的任何 fragment 中使用它:
private void onButtonClick(){
(MainActivity)getActivity()).switchFragment(new the fragment));
}
希望对你有帮助~
关于android - 如何从第 3/4/5 fragment 返回到根 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44280375/