事情是我創建一個蜂窩應用程序,我不能在片段之間切換。這是我的主要代碼:listview和fragments
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list = (ListView)findViewById(R.id.list);
A = new FragmentA();
B = new FragmentB();
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
list.setAdapter(adapter);
list.setOnItemClickListener(mylistener);
}
public void changeFragment(Fragment f){
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment, f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
}
public OnItemClickListener mylistener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
switch(position){
case 0 : changeFragment(A);
break;
case 1 : changeFragment(B);
break;
}
}
};
我才知道我把「替換」我不得不刪除,但我怎麼能去掉一個我已經在? 什麼告訴我在日誌中: 指定的孩子已經有一個父母。您必須先調用子對象的父對象的removeView()。
您能否澄清在選擇列表中的第一個條目時顯示的fragmentA IS?如果是這樣,當你選擇列表中的第二個條目時會發生什麼?我不太理解你的評論,「我怎麼能刪除我已經在?」的評論。 – PJL
現在我是FragmentA,點擊「one」會打開/重新打開fragmentA,「two」會打開fragmentB,我只想通過點擊列表中的項目從FragmentA傳遞到FragmentB。 – Tsunaze
查看API演示FragmentLayout示例,因爲它的操作與我想要的相似。首先添加一些保護,所以當你點擊相同的列表條目時,你不會重新加載同一個片段。其次要小心維護引用,請參閱[鏈接](http://stackoverflow.com/questions/6250580/fragment-already-added-illegalstateexception) – PJL