我有主要活动和2个片段,fragment1调用fragment2
当我从内置的android按钮中单击“后退”按钮时,它将调用在主活动中覆盖的onBackPressed函数,并使我退出应用程序。
我希望当我单击片段2时,不会调用主活动的onBackPressed,它将使我回到片段1。
动作栏的后退按钮可以很好地工作(我认为这意味着后退可以)。
我试着做:
getActivity().getSupportFragmentManager().beginTransaction().addToBackStack("Messages");
在片段2
并尝试添加
getSupportFragmentManager().popBackStack();
到主要活动的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,发现值是我要显示的片段1,但是当我这样做时,getSupportFragmentManager()。popBackStack();没什么。
最佳答案
覆盖Main活动中的onBackPressed()。
检查当前显示的片段,如果显示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/