当片段使用addToBackStack(null)方法并在一个活动中多次单击一个方法时,片段页面每次都会保存到后台,当我按下后退键时,它将恢复同一页面,如何添加相同的片段只堆一次?
mSettingBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SettingFragment settingFragment = new SettingFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.replace(R.id.left_framelayout, settingFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
答案 0 :(得分:21)
将Fragment
添加到后台时,您还应传递TAG
以便能够识别Fragment
:
.addToBackStack(SettingsFragment.TAG);
在添加Fragment
之前,您可以使用以下方法检查此Fragment
是否已在Backstack中完成:
getFragmentMangager().findFragmentByTag(SettingsFragment.TAG);
如果null
尚未全部添加,则会返回Fragment
。