Android:Fragments,popBackStack方法又回来了

时间:2017-02-09 19:05:12

标签: android android-fragments fragment-backstack

我了解到popBackStack方法取消了使用addToBackStack方法定义的操作。

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragment2 = BlankFragment.newInstance("Fragment 2", "");
            listaFragment2.add(fragment2);
            i++;
            fragmentTransaction.add(R.id.linearLayout, fragment2);
            fragmentTransaction.addToBackStack("myfrag");
            fragmentTransaction.commit();
            //viene salvata l'AZIONE che si COMPIE E BASTA, ovvero quella di aggiungere il fragment2, in caso si volesse annullare questa
            //operazione per far scomparire SOLO IL FRAGMENT2

        }
    });
findViewById(R.id.button4).setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            FragmentManager fragmentManager = getSupportFragmentManager();
            //si annulla l'operazione a cui il popStack è legato, ovvero si annulla l'operazione di aggiungere il fragment 2
            //una volta annullato, non si può ripetere il popoBackStack se non è stato precedentemente annunciato
            fragmentManager.popBackStack("myfrag",1);
        }
    });

当我单击按钮时,我添加了片段编号2,所以如果我单击按钮的5次,我会添加5个片段编号2.当我单击button4时,我想只删除最后一个操作(在R.id.button的OnClickListener),所以如果我单击按钮5次然后我单击button4,我只想删除第五个fragment2,因为理论上添加第五个fragment2是最后一个操作!< / strong>但是如果我点击button4,我会删除所有片段2。 方法addToBackStack是否覆盖并取消先前的方法(添加第四个片段的方法2)或&#34;添加自身&#34;到上一个?

1 个答案:

答案 0 :(得分:2)

问题是你已经将所有的后躯命名为“myfrag”,所以它会弹出你所有的后躯。

使用i生成myFrag1myFrag2等,或者不要在popBackStack中使用名称:

fragmentManager.popBackStack();