天天看點

android fragment replace 無效,Android replace Fragment時的問題

【目的】

通過點選左側側滑欄的三個按鈕,分别用不同的Fragment替換目前的Fragment

【代碼】

public void leftMenuFragmentOnClickEvent(int id) {

DrawerLayout drawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout);

switch (id){

case R.id.btn_one:

TabsFragment newFragment;

newFragment = (TabsFragment) fm.findFragmentById(R.id.content_frame);

fm.beginTransaction().replace(R.id.content_frame,newFragment).commit();

drawer_layout.closeDrawer(GravityCompat.START);

break;

case R.id.btn_two:

TabsFragment newFragment2 = new TabsFragment();

fm.beginTransaction().replace(R.id.content_frame,newFragment2).commit();

drawer_layout.closeDrawer(GravityCompat.START);

break;

case R.id.btn_three:

AnotherTabsFragment anotherTabsFragment = new AnotherTabsFragment();

fm.beginTransaction().replace(R.id.content_frame,anotherTabsFragment).commit();

drawer_layout.closeDrawer(GravityCompat.START);

break;

}

}

【問題】

android fragment replace 無效,Android replace Fragment時的問題

圖一是點選第二個按鈕前的正常界面。

圖二是點選第二個按鈕後的界面,上面的Tag不見了。為什麼?

android fragment replace 無效,Android replace Fragment時的問題

【補充】

如果btn_two的點選處理和btn_one一樣沒有任何問題,但是btn_three使用的是另一種fragment,這時如果還使用完全一樣的代碼,就會出現cannot be cast to fragment.AnotherTabsFragment 的錯誤。