同时交换两个片段

时间:2012-02-01 07:02:38

标签: android

在我的应用程序中,我有一个活动,我在运行时添加两个片段。我需要同时交换这两个片段。片段1包含一个按钮,我希望当我点击该按钮时,片段1移动到屏幕的右侧,其他片段移动到活动的左侧。

在按钮的onClick方法中,我试过这样的事情

    @Override
    public void onClick(View v) {
         FragmentTransaction ft = getFragmentManager().beginTransaction();
         Fragment newFragment = getFragmentManager().findFragmentById(R.id.pageA);
         ft.remove(newFragment);
         Fragment newFragmentB = getFragmentManager().findFragmentById(R.id.pageB);
         ft.remove(newFragmentB);
         ft.add(R.id.pageB, newFragment);
         ft.add(R.id.pageA, newFragmentB);
         ft.addToBackStack(null);
         ft.commit();
     }

但是我收到以下错误

 java.lang.IllegalStateException: Can't change container ID of fragment PageA{40653da0   #0 id=0x7f060001}: was 2131099649 now 2131099650

当我点击页面A上的按钮然后页面A和页面B的位置应该相互交换时,我想要这样的东西。

UI of the fragment

2 个答案:

答案 0 :(得分:0)

我有一个类似的问题(IllegalStateException: Can't change container ID of Fragment),我通过交换容器而不是碎片解决了......尽管如此,我仍然不知道是否有可能直接交换片段。正如我在上述帖子中所写,它似乎只适用于ics!

答案 1 :(得分:0)

我将此问题的解决方案发布到了类似的问题。我的方法是重新创建片段,但通过先保存状态并将其重新应用于新实例来保持状态。

请参阅https://stackoverflow.com/a/14951987/599614