片段回退栈不起作用,尽管调用了addToBackStack(null)

4
在我的Activity中,我调用:
getFragmentManager().beginTransaction().addToBackStack(null)
                .add(R.id.fragment_container, new UserPlaylistsFragment())
                .addToBackStack(null).commit();

这个片段已经正确添加到视图中。 该片段包含一个listview。当点击列表项时,将执行以下代码:

getFragmentManager()
            .beginTransaction()
            .replace(R.id.fragment_container, new ViewPlaylistFragment(),
                    "ViewPlaylistFragment").addToBackStack(null).commit();

这也可以正常工作。 UserPlaylistsFragment会被ViewPlaylistFragment替换。 奇怪的是: 当点击“返回按钮”时,什么也不会发生。 当连续点击两次时,应用程序关闭(没有错误)。

似乎我的“BackStack”无法使用。 有人有建议吗?

我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <RelativeLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

    </RelativeLayout>

</LinearLayout>

5
这可能是一个冒险,但我见过碎片表现得很疯狂。 你为什么要两次调用.addToBackStack(null)?你只应在addreplace之后调用它。 - blindstuff
双重的.addToBackStack(null)对我来说也很奇怪。你试过只使用在提交之前的那个吗? - Javier
2个回答

2
在您的初始FragmentTransaction中,删除第一次调用.addToBackStack(null)。

哇,这个问题很久以前就存在了,但你当然是正确的,双重返回调用是问题所在。 - Basic Coder

0

永远不要调用addToBackStack()两次...这会搞乱它


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