应用程序已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
然后按菜单,现在总共有四个片段。