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

10-12 01:40