12

当fragment使用addToBackStack(null)方法并且在一个activity中多次点击一个方法时,fragment页面每次都会保存到back stack,当我按back键时,它会恢复相同的页面,如何将相同的fragment添加到stack中一度?

    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();
        }
    });
4

1 回答 1

21

将您添加Fragment到后台堆栈时,您还应该传递 aTAG以便能够识别Fragment

 .addToBackStack(SettingsFragment.TAG);

在添加之前,Fragment您将能够使用以下命令检查这Fragment是否已经在后台堆栈中:

 getFragmentMangager().findFragmentByTag(SettingsFragment.TAG);

null如果Fragment尚未添加,这将返回。

于 2013-01-25T09:02:33.377 回答