2015-12-07 58 views
0

我想從菜單項打開片段。我有三個項目在操作欄上: 列表,編輯,設置和兩個片段現在addfragment和countriesListFragment。有一個嵌套在活動中的片段,我希望 在選擇菜單項時更改活動中的片段。通過菜單項替換片段項目

我OnOptionsItemSelected(菜單項項)方法:

public boolean onOptionsItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub 

    if (item.getItemId()==R.id.list) 
    { 


     Toast.makeText(this,"list fragment", Toast.LENGTH_SHORT).show(); 
     Fragment fr = new CountriesListFragment(); 
     FragmentManager fm = getFragmentManager(); 
     FragmentTransaction ft = fm.beginTransaction(); 
     ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     ft.replace(R.id.fragment1,fr); 
     ft.commit(); 

    } 
    if (item.getItemId()==R.id.edit) 
    { 

      Fragment fr = new addFragment(); 
     FragmentManager fm = getFragmentManager(); 
     FragmentTransaction ft = fm.beginTransaction(); 
     ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     ft.replace(R.id.fragment1,fr); 
     ft.commit(); 
    } 
    if (item.getItemId()==R.id.setting) 
    { 

    } 
    return super.onOptionsItemSelected(item); 
} 

不幹活不知道哪裏出了問題。 爲什麼我不能取代碎片?

enter image description here enter image description here


我找到了答案。 此行是錯誤的:

Fragment fr = new CountriesListFragment(); 

正確的版本:

CountriesListFragment fr = new CountriesListFragment(); 
+0

請詳細說明。什麼「不工作」。你期望發生什麼,實際發生了什麼? – Kuffs

+0

@kuffs不工作意味着:「不幸的是,skullite已經停止。」我期望片段在活動中取代。 – klaymen

+0

編輯您的問題,以包括顯示錯誤的堆棧跟蹤 – Kuffs

回答

1

的錯誤是在你的XML文件,顯然你有一個滾動型與多個直接子這是被禁止的。

+0

我把滾動視圖改爲線性佈局。但仍然無法替換菜單項中的片段。錯誤提示「指定的孩子已經是父母了,你必須先調用孩子父母的remove view()。」 – klaymen