我正在研究一個應用程序,其中有一個側面菜單。當每個項目被點擊時,片段被替換爲新的。通過清除已有的片段替換Android中的片段
我有一個這種替代片段的方法,但片段重疊而不是替換。舊片段位於背景中,新片段位於舊片段的頂部。
這是我的替換片段的方法。
private void changeFragment(Fragment targetFragment){
resideMenu.clearIgnoredViewList();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, targetFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
}
如何在放置新的碎片之前清除舊的碎片?
編輯:
private void changeFragment(Fragment targetFragment){
resideMenu.clearIgnoredViewList();
FragmentTransaction ft = (FragmentTransaction) getSupportFragmentManager().beginTransaction();
Fragment prev = (Fragment) getSupportFragmentManager().findFragmentByTag("fragment");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
ft.commit();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, targetFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.addToBackStack(null)
.commit();
}
添加此這是因爲,片段背景是透明的,因此它會告訴你如一個重疊的片段。因此,避免這種情況,您需要爲xml文件中的特定片段設置背景顏色或背景圖像。 – Piyush 2015-02-10 06:02:04
它不是關於背景顏色。我有一個webview,它有一些youtube視頻,即使我改變片段也會播放。它在後臺播放,違反YouTube的政策。我需要以某種方式清除它。 – CuckooMarianne 2015-02-10 06:22:25
您的代碼現在刪除該片段,然後嘗試替換片段。我認爲第二個操作應該是.new不是.replace。 – 2015-02-10 07:38:27