每当我回到相同的片段时,Android Fragment会创建重复的标签

时间:2015-04-23 13:36:57

标签: android android-layout android-fragments android-tabs

我使用框架布局创建了示例活动,并使用标签创建了片段。但是,当我切换到其他活动/片段而不是返回到相同的活动/片段时,它总是为选项卡创建重复的条目或视图。例如,我有tab1和tab2,当我第一次查看活动时它会显示两个标签,但当我切换到其他活动并返回标签活动时,它会显示四个标签,'tab1,tab2,tab1,tab2'。

这是我的代码

public View onCreateView(LayoutInflater Inflater, ViewGroup Container,Bundle savedInstanceState) {

    if(savedInstanceState==null) {
        rootView = Inflater.inflate(R.layout.loanapplicationview, Container, false);

        actionBar = getActivity().getActionBar();

        // Hide Actionbar Icon
        actionBar.setDisplayShowHomeEnabled(true);

        // Hide Actionbar Title
        actionBar.setDisplayShowTitleEnabled(true);

        // Create Actionbar Tabs
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Set Tab Icon and Titles
        Tab1 = actionBar.newTab().setText("Tab1");
        Tab2 = actionBar.newTab().setText("Tab2");


        // Set Tab Listeners
        Tab1.setTabListener(new TabListener(fragmentTab1));
        Tab2.setTabListener(new TabListener(fragmentTab2));


        // Add tabs to actionbar
        actionBar.addTab(Tab1);
        actionBar.addTab(Tab2);

    }
    return rootView;
  }
 }

2 个答案:

答案 0 :(得分:1)

在添加标签之前,您应检查标签是否存在。

if (actionBar.getTabCount() == 0) {
    // Set Tab Icon and Titles
    Tab1 = actionBar.newTab().setText("Tab1");
    Tab2 = actionBar.newTab().setText("Tab2");

    // Set Tab Listeners
    Tab1.setTabListener(new TabListener(fragmentTab1));
    Tab2.setTabListener(new TabListener(fragmentTab2));

    actionBar.addTab(Tab1);
    actionBar.addTab(Tab2);
}

答案 1 :(得分:0)

ActionBar().removeAllTabs()将删除附加到ActionBar的所有标签。 因此,在添加新标签之前,请使用此方法清除之前的标签

   actionBar.removeAllTabs();

// Add tabs to actionbar
    actionBar.addTab(Tab1);
    actionBar.addTab(Tab2);