2011-04-13 8 views
2

tabhostには次のコードがあります。Androidのタブホストの更新

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

問題の詳細な仕様をご記入ください。あなたがタブを更新する場合は、ユーザーがタブをクリックすると、特定の時間間隔で言うことができますか? –

+0

はい。各タブをクリックすると、アクティビティが更新されます。 – unnamed

答えて

8

:ここ

を使用すると、クリックイベントをインターセプトし、タブの下の内容を変更することができます完全な例であり、あなたのタブクラスにあなたの望む結果を得る

+0

私は ".addFlags"を持っていてerroです。なぜか教えてくれますか? – unnamed

+0

私はそれを完了しました! 、P iの – unnamed

+0

THEN ANSWER –

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がそれを行う必要があります。これはあなただけ.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)を使用

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))); 

を望むものであると思う

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

+0

が編集されました。それが表すものを参照してください。 –

2

ただonResume機能を使用してください。私のためにはうまく動作します。