标签有多个碎片问题

时间:2013-09-03 07:00:45

标签: android tabs android-fragments

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

0 个答案:

没有答案