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

Lij*_*Lou 12 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();
        }
    });
Run Code Online (Sandbox Code Playgroud)

Ovi*_*tcu 21

将您添加Fragment到Backstack时,您还应该传递一个TAG以便能够识别Fragment:

 .addToBackStack(SettingsFragment.TAG);
Run Code Online (Sandbox Code Playgroud)

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

 getFragmentMangager().findFragmentByTag(SettingsFragment.TAG);
Run Code Online (Sandbox Code Playgroud)

null如果Fragment尚未添加,则返回.

  • 传递给`addToBackStack()的Param可用于检索整个`BackStackEntry`对象,而不仅仅是单个片段.为了设置片段标签,考虑使用3-param版本的`add(int,Fragment,String)`和`replace(int,Fragment,String)` (5认同)