2011-04-13 86 views
2

我有以下代码到tabhost。Android 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))); 

我该如何刷新每个标签?我想这样做,因为我有一些显示数据库数据的问题。

坦克

+0

请提供详细的问题说明。当你想刷新标签让我们说,当用户点击标签,在一定的时间间隔? – 2011-04-13 09:53:53

+0

是的。当我点击每个标签时,我想要刷新活动 – unnamed 2011-04-13 09:54:48

回答

8

我觉得这是你想要

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)到你的标签类,并得到你想要的结果

+0

我得到了错误的“.addFlags”。你能告诉我为什么吗? – unnamed 2011-04-13 10:26:20

+0

谢谢,我完成了! – unnamed 2011-04-13 10:34:54

+0

然后接受答案 – 2011-04-13 11:10:08

0
public static void chngtab(String name) { 
    ((TextView)tabHost.getTabWidget().getChildAt(0) 
         .findViewById(android.R.id.title)).setText(name); 
} 
1

使用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); 
    } 
} 
}); 
+0

什么是TAB_1和TAB_2?一类? – unnamed 2011-04-13 10:18:35

+0

根据您的评论编辑。看看它代表什么。 – 2011-04-13 11:15:33

2

只需使用onResume函数。对我来说工作得很好。