【问题标题】:Android Fragment create duplicate tabs every time when I come back to same fragment每次我回到同一个片段时,Android片段都会创建重复的选项卡
【发布时间】:2015-04-23 13:36:56
【问题描述】:

我已经使用框架布局和带有标签的片段创建了示例活动。但是,当我切换到其他活动/片段并返回到相同的活动/片段时,它总是会为选项卡创建重复的条目或视图。例如,我有 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;
  }
 }

【问题讨论】:

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


    【解决方案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);
    }
    

    【讨论】:

      【解决方案2】:

      ActionBar().removeAllTabs() 将删除附加到您的ActionBar 的所有选项卡。 所以在添加新标签之前用这个方法清除以前的标签

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

      【讨论】:

      • 感谢您的投入,您的解决方案绝对适用于我的代码。但是,我不想在最初加载选项卡时重新加载数据。有什么方法可以显示相同的数据?
      • 如果能解决您的问题,请将其标记为有效答案
      • 但我的问题是“我不想在最初加载选项卡时重新加载选项卡中的数据。有什么方法可以显示相同的数据吗?” @Dreagen 完全解决了.....
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 2021-01-18
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      相关资源
      最近更新 更多