2014-03-24 97 views
0

我使用片段活動,ActionBar,ViewPager在我的主要活動中創建了三個選項卡。 我有三個選項卡tab1,tab2,tab3。在TAB1兩個按鈕可用,只要用戶點擊按鈕,我正在更換使用段管理和片段交易帶片段的選項卡替換內容(重疊內容)

代碼替換片段與另一個片段的片段:

FragmentTransaction fragmentTransaction = fragmentManager 
          .beginTransaction(); 
        CreditHistoryActivity creditHistoryFragment = new CreditHistoryActivity(); 

        fragmentTransaction.replace(R.id.content, 
          creditHistoryFragment); 
        fragmentTransaction.addToBackStack("fragment1"); 
        fragmentTransaction.commit(); 

這裏,TAB2按下該按鈕後被替換的內容在主要內容上重疊

請您告訴我如何解決此問題。

謝謝。

+0

也許這可能幫助:http://stackoverflow.com/questions/22408600/why-doesnt-detach-work -on-fragmenttransaction-and-remove-does – nKn

+0

爲什麼在行fragmentTransaction.replace中使用「android.R.id.content」(android.R.id.content, creditHistoryFragment); –

+0

我在我的程序中動態添加片段。我沒有在我的XML文件中提到片段 – user3454856

回答

0

如果你的碎片背景顏色是透明的,那麼所有現有的碎片都會顯示一段時間。要刪除片段實例,請在片段中使用以下代碼。

@Override 
public void onDetach() { 
super.onDetach(); 
} 

public void cleanupRetainInstanceFragment() { 
    FragmentManager fm = getFragmentManager(); 
    fm.beginTransaction().remove(this.retainInstanceFragment).commit(); 
} 

在fragmentActivity這樣做

Fragment oldFragment = getSupportFragmentManager().findFragmentById(R.id.content); 
    if (oldFragment instanceof CreditHistoryActivity) { 
     ((CreditHistoryActivity)oldFragment).cleanupRetainInstanceFragment(); 
    } 

    Fragment fragment = new CreditHistoryActivity(); 
    getSupportFragmentManager().beginTransaction().replace(R.id.content,fragment).commitAllowinStateLoss(); 

詳見this

+0

嗨,謝謝你的回覆。我在CreditHistoryActivity類中添加了onDetach()代碼,並在BalanceActivity類中添加了以下代碼。我正在嘗試執行我的應用程序,我又重疊了tab2 CreditHistoryActivity輸出在tab3內容中重疊... – user3454856