2012-02-01 73 views
5

在我的應用程序中,我有一個活動,我在運行時添加兩個片段。我需要同時交換這兩個片段。片段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

回答

0

我有一個類似的問題(IllegalStateException: Can't change container ID of Fragment)和我通過交換,而不是碎片容器......儘管如此,我仍然不知道它是否是不可能性,直接交換片段解決。正如我在前面提到的文章中所寫的,它似乎只適用於ics!

+0

即我還發現它不適用於蜂窩。我從來沒有在ICS上試過它。那麼它可能是一個Android問題 – 2012-04-02 04:01:38

+0

它可以在ICS上運行,只要您在兩個單獨的事務中刪除並添加一個frag(查看上面的鏈接以瞭解它是如何完成的) – Matthew 2012-04-02 08:15:33