android - 如何从第 3/4/5 fragment 返回到根 fragment ?

标签 android fragment

我在堆栈中有 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/

相关文章:

Android:滑动菜单更改内容

android - 谷歌地图 fragment 在 N​​estedScrollView 内滚动

android - 如何在我的 Activity 中重启 Fragment - Android

android - 将动态 View 添加到 android tabhost

使用 Frida 的抽象类方法调用的 Android Hook

android - Android + Google API v2

java - 开始新 Activity 时强制关闭

java - 在多个 fragment 中显示日期

android - USB 键盘 - 在 android 中没有获得相同的扫描代码

android - 如何从一个 fragment 移动到一个 Activity