Android: 碎片,popBackStack 方法太靠后了
Android: Fragments, popBackStack method goes too back
我了解到 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中,所以如果我点击button 5次然后点击button4,我只想移除第五个fragment2,因为理论上添加第五个fragment2是最后一个操作! 但是如果我点击button4,我会删除所有的fragments2。 addToBackStack 方法是否覆盖并取消了先前的方法(添加第四个片段2 的方法)或"add itself" 到先前的方法?
问题是你已经命名了你所有的 backstacks "myfrag",所以它会弹出你所有的 backstacks。
要么用i
生成一个myFrag1
、myFrag2
等等,要么不使用popBackStack
中的名字:
fragmentManager.popBackStack();
我了解到 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中,所以如果我点击button 5次然后点击button4,我只想移除第五个fragment2,因为理论上添加第五个fragment2是最后一个操作! 但是如果我点击button4,我会删除所有的fragments2。 addToBackStack 方法是否覆盖并取消了先前的方法(添加第四个片段2 的方法)或"add itself" 到先前的方法?
问题是你已经命名了你所有的 backstacks "myfrag",所以它会弹出你所有的 backstacks。
要么用i
生成一个myFrag1
、myFrag2
等等,要么不使用popBackStack
中的名字:
fragmentManager.popBackStack();