2015-08-09 82 views
2

所以我發現了一些類似的情況,但沒有任何關於這個特定情況。使用「替換」時,「無法更改碎片的容器ID」

  1. 我有一個FrameLayout,我給了id「容器」,幷包含幾個不同的片段。

  2. 在我的包含FrameLayout的活動的代碼中,我試圖用一個接收片段的函數在片段之間切換。

  3. 該代碼:

    a。我已經定義了private FragmentManager fm = getSupportFragmentManager();

    b。我已經定義了FragmentTransaction ft;以後使用。

    c。我的作用是:

    private void setActiveFragment(Fragment fragment){ 
    
    //Determine which button should be marked as "active" 
    determineButtonByFragment(fragment); 
    
    //Repalce fragment 
    ft = fm.beginTransaction(); 
    ft.replace(R.id.container, fragment); 
    ft.addToBackStack(String.valueOf(fragment.getId())); 
    ft.commit(); 
    } 
    

任何想法,爲什麼我會得上「替換」這個錯誤?

編輯: 好吧,我只是意識到更多關於片段。由於所有5個片段都添加到FrameLayout中,「替換」將不起作用。當你試圖將一個片段從一個父視圖移動到另一個視圖(或者在這種情況下,到同一個視圖)時,你會得到「不可能的容器ID錯誤」,而不會先將它分開。 假設我有片段A,B,C,D,E。 如果我現在想替換爲片段B,我將無法做到這一點,直到我從它的原始父項中移除它(或者至少這是我認爲它的工作原理,否則請賜教)。現在剩下的唯一問題是如何將我的片段之間正確地切換...

+0

最新錯誤? ..請張貼布局和日誌。 – Akhil

回答