我有主要 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/