替换片段时addToBackStack不起作用

3

我遇到了一个问题,当我替换Fragment时,调用addToBackStack方法,但是当我按返回键回到该Fragment时,它并没有回到上一个Fragment,而是直接关闭了我的应用程序。

Fragment fragmentWebView = new MyWebView();
transaction.replace(R.id.content_frame, fragmentWebView);
transaction.addToBackStack(null);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.commit();

我这里有什么做得不对吗?在我看来一切都很正常。

3个回答

3
试着将以下代码添加到您的活动中:
@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0 ){
        getFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
    }
}

在这里观看

希望能对您有所帮助


0

你应该调用addToBackStack(MyWebView.class.getName());,并建议您检查片段是否存在。完整的事务可以像这样:

Fragment fragmentWebView = getFragmentManager().findFragmentByTag(MyWebView.class.getName());
if (fragmentWebView == null)
     fragmentWebView = new MyWebView();

transaction.replace(R.id.content_frame, fragmentWebView, MyWebView.class.getName());
transaction.addToBackStack(MyWebView.class.getName());
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.commit();

现在,您可以通过标签(MyWebView.class.getName())来识别您的片段。希望能对您有所帮助!

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接