android fragment addToBackStack(null) :how to add the same fragment to stack just one time?

标签 android fragment

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

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

最佳答案

Fragment 添加到后台堆栈时,您还应该传递一个TAG 以便能够识别该Fragment:

 .addToBackStack(SettingsFragment.TAG);

在添加 Fragment 之前,您将能够检查此 Fragment 是否已在后台堆栈中使用:

 getFragmentMangager().findFragmentByTag(SettingsFragment.TAG);

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

关于android fragment addToBackStack(null) :how to add the same fragment to stack just one time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14518086/

相关文章:

SurfaceView 上的 Android 中心 CameraPreview

android - 带有gradle 2.7的`android create` gradle项目

android - 我如何访问使用 fragment 膨胀的按钮?

Android:更改 fragment 中的layout.xml

android - 从 Android NDK list 文件中引用相对路径资源

java - 如何从android中的URL下载文件的一部分?

android - 在特定日期和时间使用 Alarmmanager 启动服务并重复

android - 在关闭之前动画 fragment 内容

java - 为什么在制作 FragmentPagerAdapter 时出现错误?

显示两个 fragment 时android显示actionbar