2011-11-11 14 views
1

私のアプリケーションでカスタムタブバーを作成しました(TabHostTabWidgetを使用しています)。しかし、私の中でTabActivity私は現在選択されているActivityのメソッドを呼び出したいと思います。ここ は、私はタブバーを初期化する方法のサンプルです:Androidタブバー:現在のタブアクティビティにアクセスする

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.tabbar); 

     TabHost tabHost = getTabHost(); 
     Intent content; 
     Button tabView; 
     TabSpec tab; 

     content = new Intent(this, Test1.class); 
     tabView = new Button(getApplicationContext()); 
     tabView.setBackgroundDrawable(getResources().getDrawable(R.drawable.btn_tableft_selector)); 
     tabView.setText("Test1"); 
     tabView.setTypeface(font); 
     tabView.setTextColor(Color.WHITE); 
     tabView.setPadding(0, 2, 0, 0); 
     tab = tabHost.newTabSpec("test1").setIndicator(tabView).setContent(content); 
     tabHost.addTab(tab); 

     ... 
    } 

私の問題は私のTabActivityに、すべての3つのタブでは、私はLocationUpdatesを受信したいということですが、私は位置情報の更新を配信する前に、いくつかの検証を行う必要がありますタブのActivityに移動します。
私がしたかったのはTabActivityに位置更新を受け取り、処理を行い、現在のタブActivityのメソッドを呼び出しましたが、tabHostからアクセスできません。これを行う方法はありますか?

答えて

1

すべてのアクティビティの場合、TabActivityがActivityGroupを拡張するので、ActivityGroupのものを使用できます。クラッシュを避けるため、またはチェックを行うために、すべてのアクティビティが実装するロケーションインターフェイスまたは何かを定義する必要があります。あなたはあまりにも遠く、まだ一緒にあなたがtabactivityとactivitygroupが

LocalActivityManager m = getLocalActivityManager(); 
((LocationInterface)m.getCurrentActivity()).sendLocation(); 
+0

おかげで廃止されているように、互換性ライブラリを使用してフラグメントを使用することを検討すべきである、私は今週、それをしようとしていない場合にも、あなたが私は必要に応じて、それが働いているかどうかを知りましょう:) – ffleandro

+0

それは私が必要としたとおりに正確に働いた:)ありがとう。あなたはFragments APIを使ってTabActivityを実装するための良いチュートリアルを知っていますか? – ffleandro

+0

http://android.codeandmagic.org/2011/07/android-tabs-with-fragments/それを試してみてくださいが、それを見てから、あなたはtabhostなしで少し簡素化できると言います。ボタンや何かを使ってしかし、始めるには良い場所です。 – caguilar187

関連する問題