2014-11-05 62 views
0

我需要動態更改抽屜內容。我打算用碎片來做。意味着開始新的片段來改變抽屜的視圖。其實我的抽屜本身就是一個片段。我給這樣的代碼的第一個片段內:使用分段動態更改抽屜的內容

@Override 
public void onActivityCreated (Bundle savedInstanceState) 
{ 
    super.onActivityCreated(savedInstanceState); 
    LinearLayout helpLL = (LinearLayout) getView().findViewById(R.id.helpLL); 
    helpLL.setOnClickListener(new OnClickListener() 
    {   
     @Override 
     public void onClick(View v) 
     { 
       Fragment detail = new DetailFragment(); 
       FragmentManager fragmentManager = getFragmentManager(); 
       fragmentManager.beginTransaction().replace(R.id.left_drawer, detail).commit();         
     } 
    }); 
} 

我需要改變用這個佈局整個抽屜視圖。 left_drawer是我的第一個片段所在的main.xml中的視圖。但是當我點擊時,什麼都沒有發生。

請告訴我我用這段代碼做了什麼錯誤。

感謝 Jomia

+0

變化意味着什麼?你正在添加一些東西。? – Riser 2014-11-05 09:40:32

+0

意味着從第一個片段開始新的片段。第二個片段具有完全不同的視圖和功能。第二種觀點應該取代第一種觀點。 – Jomia 2014-11-05 09:46:25

+0

你爲什麼要用碎片來做到這一點?爲什麼要讓你的生活變得複雜? – pskink 2014-11-05 09:54:57

回答

2

我終於找到了解決辦法。我在代碼中犯了一個錯誤。實際上,我用xml爲第一個抽屜硬編碼了片段。硬編碼爲XML的片段不能被替換。這就是爲什麼沒有創建第二個片段。

所以我動態地添加了第一個片段。現在,它正在罰款..

main.xml中

<LinearLayout android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:id="@+id/left_drawer" 
     android:layout_weight="1" 
     android:layout_gravity="right" 
     android:orientation="vertical"> 
    </LinearLayout> 

在活動

 FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     settingsFragment = new SettingsFragment(); 
     fragmentTransaction.add(R.id.left_drawer, settingsFragment, "settingsFragment"); 
     fragmentTransaction.commit(); 

在SettingsFragment.java

@Override 
    public void onActivityCreated (Bundle savedInstanceState) 
    { 
     super.onActivityCreated(savedInstanceState); 
     LinearLayout helpLL = (LinearLayout) getView().findViewById(R.id.helpLL); 
     helpLL.setOnClickListener(new OnClickListener() 
     {   
      @Override 
      public void onClick(View v) 
      {   
       Fragment detail = new DetailFragment(); 
       FragmentManager fragmentManager = getFragmentManager();    
       fragmentManager.beginTransaction().replace(R.id.left_drawer, detail,"Details").commit(); 
      } 
     }); 
    } 

這就是所有...