嗨,我不知道我做的是正確的事情。我在一個活動中有幾個片段(未同時顯示)。當我添加片段時,是否必須檢查前一個實例是否存在?我使用的是兼容包,我的片段CameraFragment是一個單獨的類(在它自己的文件):Android片段實例避免重複
private void addNewFragment(Fragment fragment, String tag) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.frag1, fragment, tag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
然後:
public void startPicTaking() {
addNewFragment(CameraFragment.newInstance(), TAG_PIC_TAKING);
}
所以每次用戶點擊一個按鈕,拍攝一張照片我使用這種方法,但我應該驗證片段是否已經存在,並且首先將其刪除,或者執行靜態方法newInstance確保片段不重複?
我已經讀了幾次文檔,但我不明白爲什麼行: ft.addToBackStack(null); 這是幹什麼用的?我知道你可以彈出後退堆棧並保存事務,但是如何使用它以及如何使用?是否有必要或如果我不使用它我可以跳過它?
感謝
感謝Eric,所以如果我理解正確,如果我希望我的片段在刪除時被銷燬,那麼我省略addToBackStack(null)? – vallllll
沒錯。如果當你調用'replace()'時,當前片段沒有保存在後端堆棧中,它將被銷燬。 – Eric