片段堆栈中不工作虽然addToBackStack(空)称为

问题描述:

在我的活动我打电话:片段堆栈中不工作虽然addToBackStack(空)称为

getFragmentManager().beginTransaction().addToBackStack(null) 
       .add(R.id.fragment_container, new UserPlaylistsFragment()) 
       .addToBackStack(null).commit(); 

这个片段被正确添加到视图。 该片段包含一个列表视图。单击某个项目时,将执行以下代码:

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)'两次?你应该只在'add'或'replace'之后调用它。 – blindstuff 2012-02-09 20:45:55

+0

双'.addToBackStack(null)'对我来说也很奇怪。你有没有尝试只使用提交之前的那个? – Javier 2012-09-28 22:46:15

在初始FragmentTransaction删除您来.addToBackStack(空)第一个电话。

+0

哇这个问题很久以前,但是你是对的,双后台电话是问题 – 2013-02-05 22:42:31

,一定不要调用addToBackStack()twise ..它会搞砸了