应用程序tabs
通过选择每个tab
我有以下代码来更新选项卡下方存在的片段屏幕。
public class MainActivity extends ActionBarActivity{
Fragment f = null;
TabFragment tf = null;
List<Fragment> fragList = new ArrayList<Fragment>();
int tabIndex;
public void onTabSelected(Tab tab, FragmentTransaction ft) {
tabIndex = tab.getPosition();
if (fragList.size() > tab.getPosition())
fragList.get(tab.getPosition());
if (f == null) {
tf = new TabFragment();
Bundle data = new Bundle();
data.putInt("index", tabIndex);
data.putString("extraString", "noreloading");
tf.setArguments(data);
fragList.add(tf);
}
else
tf = (TabFragment) f;
ft.replace(android.R.id.content, tf);
}
因此,我只使用每个选项卡更新一个片段类。
一切正常。我在backstack
. 这就是我想要的。但是我actionbar
通过选择该选项打开了一个菜单,我应该用新内容重新加载片段。所以我在mainactivity中做了以下操作。
public void menuSelected(){
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
// fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) added clear backstack here no use.
tf = new TabFragment();
Bundle data = new Bundle();
data.putInt("index", tabIndex);
data.putString("extraString", "reload");
tf.setArguments(data);
fragList.add(tf);
ft.addToBackStack(null);
ft.commit();
ft.replace(android.R.id.content, tf);
}
}
这里会发生什么,它会重新加载新数据,但是backstack
当我按下后退按钮时,前一个片段存在。
所以我不想要任何片段backstack
,我只想替换/重新加载片段内容。
有人可以建议如何解决这个问题吗?因为假设我们现在总共有两个片段,一个是前一个片段,另一个是重新加载的片段。现在如果我们再按另一个tab
,然后再按一次菜单,现在总共有四个片段。