Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android fragment addToBackStack(null):如何将相同的片段一次性添加到堆栈中?_Android_Fragment - Fatal编程技术网

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

android fragment addToBackStack(null):如何将相同的片段一次性添加到堆栈中?,android,fragment,Android,Fragment,当fragment使用addToBackStack(null)方法并在活动中多次单击某个方法时,每次碎片页面都会保存到back stack,当我按back键时,它会还原相同的页面,如何将相同的碎片一次性添加到stack mSettingBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { SettingFragm

当fragment使用addToBackStack(null)方法并在活动中多次单击某个方法时,每次碎片页面都会保存到back stack,当我按back键时,它会还原相同的页面,如何将相同的碎片一次性添加到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();
        }
    });

片段
添加到backstack时,还应传递
标记
,以便能够识别该
片段

 .addToBackStack(SettingsFragment.TAG);
在添加
片段
之前,您将能够使用以下方法检查该
片段
在backstack中是否准备就绪:

 getFragmentMangager().findFragmentByTag(SettingsFragment.TAG);

如果未添加
片段
,则返回
null

传递给
addToBackStack()
的参数可用于检索整个
BackStackEntry
对象,而不仅仅是单个片段。为了设置片段标签,考虑使用3PARAM版本的代码>添加(int,片段,字符串)和<代码>替换(int,片段,string)。那么,在点击后退按钮后,如何用标签检索片段?在哪里以及如何做到这一点?类似于:ListFragment 1(单击listView行,使用标记提交事务)>>>>ListFragment 2>>>(单击)后退按钮>>>通过标记检索/恢复ListFragment 1,而无需重新加载data@whyoz
片段将为您还原,您无需手动重新添加它或其他任何东西,这将由Android完成,如果正确使用了
片段
和后台堆栈,那么如果片段正在重用同一类呢?假设片段1名为“LF”,您希望单击一行并加载另一个“LF”(片段2)。片段1将一个字符串传递给片段2,片段2加载不同的数据,但它使用相同的类(LF)。逻辑会说使用像addToBackStack(string)这样的字符串,然后我回击并获取FragmentManager()。findFragmentByTag(string)返回null??如果有什么不同的话,我使用的是替换而不是添加。