java - 从其他 fragment 回到上一个 fragment

标签 java android android-fragments android-activity

我有主要 Activity 和 2 个 fragment , fragment 1 调用 fragment 2 当我从内置的 android 按钮中单击后退按钮时,它会调用我在主要 Activity 中覆盖的 onBackPressed 函数并退出应用程序。 我希望当我返回 fragment 2 时,不会调用主要 Activity 的 onBackPressed,它会返回到 fragment 1。 操作栏的后退按钮效果很好(我认为这意味着后退是可以的)。

我尝试过:

getActivity().getSupportFragmentManager().beginTransaction().addToBackStack("Messages");

关于 fragment 2

并尝试添加

getSupportFragmentManager().popBackStack();

到主要 Activity 的onBackPressed() 它什么也没做 谢谢

编辑:

I am trying to do 
    public void onBackPressed() {
//      getSupportFragmentManager().popBackStack();
        android.support.v4.app.Fragment fragment2 = getSupportFragmentManager().findFragmentByTag(null);
        if (fragment2 != null && fragment2.isVisible()) {
            getSupportFragmentManager().popBackStack();
            return;
        }

在任何演出之前

getSupportFragmentManager().beginTransaction().addToBackStack(null).commit();
        tr.show(Fragment2);

但是在 findFragment(null) 上得到了 null

编辑: 我检查了 getSupportFragmentManager().beginTransaction().mTail.fragment 并看到该值是我想要显示的 fragment 1,但是当我执行 getSupportFragmentManager().popBackStack(); 时它什么都没有。

最佳答案

重写主 Activity 中的 onBackPressed()。

查看当前显示的fragment,如果显示的是fragment2,则弹出回栈。

例子:

@Override
public void onBackPressed() {
    Fragment fragment2 = getFragmentManager().findFragmentByTag("tag");
    if (fragment2 != null && fragment2.isVisible()) {
        getFragmentManager().popBackStack();
    } else {
        finish();
    }
}

关于java - 从其他 fragment 回到上一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31473073/

相关文章:

android - 如何循环显示整个 Activity

java - 如何在父 fragment Activity 的 viewpager 中的两个列表 fragment 之间进行通信

Java 线性回归不起作用

java - 遍历不同长度的并行数组

Java 7 无法收集由 Java 5 收集的永久代

android - RecyclerView 2 Columns with CardView

java - antlr 返回值作为键值

android - 设计适用于所有屏幕的 Android 应用程序

java - 何时对 fragment 使用 onCreateView?

android - 为什么 Android Studio 会自动导入 android.app.Fragment 而不是 androidx.fragment.app.Fragment?