【问题标题】:Android: Fragments, popBackStack method goes too backAndroid:Fragment,popBackStack方法回退
【发布时间】:2017-02-09 19:05:12
【问题描述】:

我了解到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号片段。当我点击按钮4时,我只想删除最后一个操作(定义在R.id.button的OnClickListener),所以如果我点击按钮5次然后点击button4,我只想删除第五个fragment2,因为理论上添加第五个fragment2是最后一个操作! 但是如果我单击按钮 4,我会删除所有片段 2。 addToBackStack 方法是覆盖并取消之前的方法(添加第四个片段2 的方法)还是“将自身添加”到之前的方法?

【问题讨论】:

    标签: android android-fragments fragment-backstack


    【解决方案1】:

    问题是您已将所有 backstack 命名为“myfrag”,因此它会弹出所有 backstack。

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

    fragmentManager.popBackStack();
    

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 2015-12-03
      • 2019-04-16
      • 2012-08-22
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2014-11-16
      相关资源
      最近更新 更多