android片段addToBackStack(null):如何将相同的片段添加到栈中一次?

时间:2013-01-25 08:34:00

标签: android fragment

当片段使用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();
        }
    });

1 个答案:

答案 0 :(得分:21)

Fragment添加到后台时,您还应传递TAG以便能够识别Fragment

 .addToBackStack(SettingsFragment.TAG);

在添加Fragment之前,您可以使用以下方法检查此Fragment是否已在Backstack中完成:

 getFragmentMangager().findFragmentByTag(SettingsFragment.TAG);

如果null尚未全部添加,则会返回Fragment