【问题标题】:Android Tabhost refreshAndroid Tabhost 刷新
【发布时间】:2011-04-13 09:50:42
【问题描述】:

我有以下代码来tabhost。

tabHost.addTab(tabHost.newTabSpec("tab1")
            .setIndicator("First Text")
            .setContent(new Intent(this, class1.class)));
tabHost.addTab(tabHost.newTabSpec("tab2")
            .setIndicator("Second Text")
            .setContent(new Intent(this, class2.class)));

如何刷新每个标签?我想这样做是因为我在显示数据库中的数据时遇到了一些问题。

坦克

【问题讨论】:

  • 请提供您的问题的详细说明。当您想刷新选项卡时,可以说,当用户单击选项卡时,以特定的时间间隔?
  • 是的。当我单击每个选项卡时,我希望刷新活动

标签: java android android-tabhost


【解决方案1】:

我想这就是你想要的

 tabHost.addTab(tabHost.newTabSpec("tab1")
        .setIndicator("First Text")
        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
        .setContent(new Intent(this, class1.class)));
 tabHost.addTab(tabHost.newTabSpec("tab2")
        .setIndicator("Second Text")
        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
        .setContent(new Intent(this, class2.class)));

只需将.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 用于您的选项卡类并获得您想要的结果

【讨论】:

  • 我在“.addFlags”上出错了。你能告诉我为什么吗?
  • 嗨,我怎样才能添加标志呢? mTabsAdapter.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"),FragmentStackSupport.TABcontent.class, null);
  • @xDragonZ addFlags 方法必须在 Intent 上调用,而不是在 TabSpec 上
【解决方案2】:

只需使用onResume 函数。对我来说效果很好。

【讨论】:

    【解决方案3】:

    使用http://developer.android.com/reference/android/widget/TabHost.OnTabChangeListener.html

    例如:

      mTabHost.setOnTabChangedListener(new OnTabChangeListener(){
      @Override
     public void onTabChanged(String tabId) {
        if(TAB_1.equals(tabId)) {
         //Do first activity task
      }
      if(TAB_2.equals(tabId)) {
          //Do the other task...so on
      }
    }});
    

    已编辑:

    如果您想查看特定选项卡被点击,您需要将侦听器添加到选项卡本身,而不是 TabHost。

    选项卡实现中的视图层次结构是:

    TabHost
        TabWidget
            (tab)
            (tab)
        FrameLayout
    

    标签在运行时通过调用添加:tabHost.addTab(tabHost.newTabSpec(""));

    然后,您可以通过调用获取各个选项卡的句柄:getTabWidget().getChildAt(4);

    本质上,您是将 OnClickListener 添加到 TabWidget 的子级。您现在可以在您的个人标签上获得点击次数。但是,这将覆盖单击选项卡时更改内容的默认行为。因此,要更改您的内容,您的 OnClickListener 需要为您执行此操作。

    这是一个完整的例子,它可以让你拦截点击事件,并改变标签下面的内容:

     final String myTabTag = "My Tab";
     final int myTabIndex = 3;
    
     getTabHost().addTab( getTabHost().newTabSpec(myTabTag) );
    
     getTabWidget().getChildAt(myTabIndex).setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
         if (getTabHost().getCurrentTabTag().equals(myTabTag)) {
            getTabHost().setCurrentTab(myTabIndex );
        }
    }
    });
    

    【讨论】:

    • TAB_1 和 TAB_2 是什么?上课?
    【解决方案4】:
    public static void chngtab(String name) {
        ((TextView)tabHost.getTabWidget().getChildAt(0)
                          .findViewById(android.R.id.title)).setText(name);
    }   
    

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多