0

2 つのタブに表示される 1 つのアクティビティが必要です。

私のメインでは、次のものがあります。

    TabHost tabHost = getTabHost();  // The activity TabHost

    tabHost.addTab(tabHost.newTabSpec("tab0").setIndicator(tabNames[0]).setContent(R.id.tab0));
    tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator(tabNames[1]).setContent(R.id.tab1));

    Intent intent = new Intent().setClass(this, DMXControllerActivity.class);
    startActivity(intent);

私のmain.xmlでは、FrameLayoutの中にこれがあります:

   <LinearLayout
       android:id="@+id/tab0"
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:padding="5dp">
    </LinearLayout>

   <LinearLayout
       android:id="@+id/tab1"
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:padding="5dp">
    </LinearLayout>

私の活動では、これがあります:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    layoutTab0();
    layoutTab1();

}

プライベートボイドlayoutTab0(){

   LinearLayout ll_main = new LinearLayout(this);
   ll_main.setOrientation(LinearLayout.VERTICAL);

    LinearLayout myll = (LinearLayout) findViewById(R.id.tab0);

    myll.addView(ll_main);

    LinearLayout ll_sliders = new LinearLayout(this);
    ll_sliders.setOrientation(LinearLayout.VERTICAL);
    ll_main.addView(ll_sliders);

……………………

}

アプリを起動すると、tab0 と tab1 の内容が重なり合って表示されます。エミュレーターで戻るキーを押すと、期待どおりに 2 つのタブが表示されますが、それらは空です。

タブのコンテンツをタブに表示するにはどうすればよいですか?

4

1 に答える 1

0

ContentView を設定した後、次のコードを実行する必要があります。

TabHost tabHost = getTabHost();  // The activity TabHost
tabHost.addTab(tabHost.newTabSpec("tab0").setIndicator(tabNames[0]).setContent(R.id.tab0));
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator(tabNames[1]).setContent(R.id.tab1));

onCreate() を次のように変更します。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    TabHost tabHost = getTabHost();  // The activity TabHost
    tabHost.addTab(tabHost.newTabSpec("tab0").setIndicator(tabNames[0]).setContent(R.id.tab0));
    tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator(tabNames[1]).setContent(R.id.tab1));

    layoutTab0();
    layoutTab1();
}

コードでは、タブを作成してから新しいアクティビティを開きます。アクティビティを開かない場合、タブは表示されますが、コンテンツを追加していないため、タブは空になります。新しいアクティビティを呼び出す必要はありません。コンテンツをタブレイアウトに追加するだけで機能します。

于 2012-05-11T19:05:43.293 に答える