2
我有一些碎片將被以下方法替換。我認爲我的代碼有問題,因爲我想阻止將多個片段添加到後端堆棧中。如果我點擊片段B兩次,所有實例將被添加到後退棧中,並且按下後退按鈕將通過兩個創建的實例。Android碎片 - 如果已經存在,則從碎片堆棧中移除碎片
public void replaceFragment(Fragment fragment, boolean addToBackStack, boolean customAnimation) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
String tag = fragment.getClass().getSimpleName();
if (customAnimation) {
transaction.setCustomAnimations(R.anim.slide_in_bottom, R.anim.slide_out_bottom, R.anim.slide_in_bottom, R.anim.slide_out_bottom);
}
transaction.replace(R.id.fragment_container, fragment, tag);
// remove from back stack if exists
// always return false!
boolean f = manager.popBackStackImmediate(tag, 0);
if (addToBackStack) {
transaction.addToBackStack(tag);
}
transaction.commit();
}
這是我真正需要的。謝謝丹尼爾。我有個問題。爲什麼你將'null'作爲返回堆棧名稱?如果我傳遞片段標籤會發生什麼? – Alireza