2010-10-09 168 views
3

我有一個TabHost中的3個選項卡(文本標籤,沒有圖像)的Android應用程序。我設置的標籤,像這樣:更改Android標籤上的文本

intent = new Intent().setClass(this, AnnouncementsActivity.class); 
spec = tabHost.newTabSpec("news").setIndicator("News").setContent(intent); 
tabHost.addTab(spec); 

我啓動一個後臺線程來從我的服務器公告,我想更新選項卡上的文本標籤,告訴許多新的公告有怎樣的用戶。例如,我想將選項卡上的文字更改爲「新聞(3)」。我如何訪問和更改標籤上的文本標籤?

歡迎任何建議!

回答

0

查看代碼演示here,看代碼的末尾有hacky的方式來獲取textView。

+0

感謝您的回覆。我在訪問TabHost時沒有問題,我的問題是我無法在TabHost中找到任何可以更改選項卡上文本的內容。一旦我擁有TabHost引用,如何更改文本? – 2010-10-09 20:33:07

+0

好的,謝謝你的鏈接。你是對的,這真的很危險,我不知道爲什麼沒有更簡單的方法,但它爲我工作,所以它現在會做。再次感謝! – 2010-10-09 21:58:04

5

你可以像下面這樣做

TabHost tabHost = getTabHost(); 
TextView tv = (TextView) tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.title); 
tv.setText("New Tab Text"); 

哪裏是系統生成android.R.id.title,只是根據你的需要

+0

謝謝你很好的解決方案在這裏工作。 – 2014-11-14 07:22:14

+0

對我來說,它給textView的空指針異常。你能爲我解釋一下嗎? – 2016-03-08 07:44:07

+0

@ParthibanM請查看我的帖子,作爲您的空指針異常的可能解決方案。 – oddmeter 2016-06-14 20:57:58

1

對於Android的更高版本(5.1)改變ChildIndex文本,這工作對我來說:

請注意這個例子只改變第一個標籤的文本。調整任意標籤不會太困難。

FragmentTabHost tabHost = (FragmentTabHost)view.findViewById(android.R.id.tabhost); 
AppCompatTextView tv = null; 
RelativeLayout parentLayout = (RelativeLayout)tabHost.getTabWidget().getChildAt(0); 

for (int i = 0; i < parentLayout.getChildCount(); i++) { 

    View tempView = parentLayout.getChildAt(i); 

    if (tempView instanceof AppCompatTextView) { 
     tv = (AppCompatTextView)tempView; 
    } 
} 

if (tv != null) { 
    tv.setText("Your updated text goes here"); 
} 

我所做的只是通過調試器運行並找出層次結構。我無法使android.R.id.title正常工作,因爲文本視圖現在由不同的ID引用。無論如何,它現在也是一個AppCompatTextView,而不是一個普通的舊式TextView。

再次,這是非最佳的,但獲得更多的最新版本的Android所需的結果。

希望這會有所幫助!

+0

謝謝,這工作得很好。 – 2016-06-20 13:48:23

0

最近我需要更改TabHost的文本,並使用下面的代碼解決了問題。

請原諒我的英語,我是巴西人,我還在學習。 我希望能幫助有同樣問題的人。

TabHost host = (TabHost)findViewById(R.id.tabDetail); 
    host.setup(); 

    //Tab 1 
    TabHost.TabSpec spec = host.newTabSpec("tab1"); 
    spec.setContent(R.id.tab1); 
    spec.setIndicator("Details"); 
    host.addTab(spec); 

    //Tab 2 
    spec = host.newTabSpec("tab2"); 
    spec.setContent(R.id.tab2); 
    spec.setIndicator("Comments"); 
    host.addTab(spec);