2012-04-13 5 views
0

Android Appでは、4つのタブで構成されるTabBarを使用しています。私は4つのタブのすべてのオブジェクトを取得する必要があります。どのようにこれを達成することができます、任意の提案。AndroidでTabBarタブのオブジェクトを取得するには?

+0

どのようなオブジェクトですか? –

+0

こんにちはセルゲイGlotov、すべてのタブのために私は1つのアクティビティを添付しているので、すべての4つのアクティビティがあります。これらのオブジェクトを取得したいので、Activityクラスのメソッドを呼び出すことができます – user1331691

答えて

0
 TabHost.TabSpec spec; // This is the Object of TabBar 
     Intent intent; 

     // Single Activity 
     intent = new Intent().setClass(this, Home.class); 
     spec = tabHost.newTabSpec(getResources().getString(R.string.Home)).setIndicator(getResources().getString(R.string.Home),res.getDrawable(R.drawable.home)).setContent(intent); 
     tabHost.addTab(spec); 

は今、あなたは次のように別のタブを追加することができ、この

私は2つの明白なアプローチを考えることができ
+0

Dev、上記のコードです上の例では、Homeという名前のActivityで使用しました。ここでは、Tab barクラスでHomeオブジェクトを取得します。 – user1331691

0

LocalActivityManager(、すべてのActivityGroupで利用可能であるべきであるので、また中

  1. 使用する関数TabActivity)はアクティビティを取得するためのものです。現在選択されているのいずれかをgetCurrentActivity()にコールするか、TabSpecgetActivity(String id)の一部として使用されたタグを渡すことによって、いずれかを取得できます。
  2. アクティビティに対するタグの独自のローカルマッピングを作成し、ルックアップに使用します。例えばMap<String, Activity>である。

どちらの場合でも、独自のメソッドにアクセスするには、汎用Activityを独自の実装にキャストする必要があります。アクティビティがすべて同様のメソッドを実装する必要がある場合は、それらのメソッドを宣言するインターフェイスを使用し、そのインターフェイスをキャスト/マッピングに使用するようアドバイスします。例えばMap<String, ITabbedActivity>である。

また、Activityごとに1つのメンバー変数を使用して、さまざまなアクティビティを追跡することもできます。そうすれば、キャスティングを避けることができます。 4つ以上のタブを扱っている場合は、このアプローチをとることはお勧めしません。

関連する問題