4

私は現在、Android 1.5 SDK を試しており、TabHost でいくつかの例を見てきました。私がやろうとしているのは、各タブで異なるボタンを使用してそのタスクを実行することです。

私が試したのは、onClickListiner() と onClick() を使用することでした。これはすべての開発者が使用しているものだと思いますが、ボタンが押されるたびに LogCat で null 例外が発生し続けます。また、各 XML レイアウトがあるため、タブを次のように呼び出します: tab.add(...setContent(R.id.firstTabLayout))

firstTabLayout = layout for Button and TextView.

TabHost の下でボタン/TextView を適切に動作させる最善の方法は何でしょうか?

4

1 に答える 1

0

あなたの問題がどこにあるのか完全にはわかりませんが、これは以前にタブ付きアクティビティを設定した方法です

レイアウト.xml

<TabWidget android:id="@android:id/tabs"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

<FrameLayout android:id="@android:id/tabcontent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout android:id="@+id/tab1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView android:id="@android:id/text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>
    <LinearLayout android:id="@+id/tab2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView android:id="@android:id/text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>
    <LinearLayout android:id="@+id/tab3"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView android:id="@android:id/text"
            android:layout_width="fill_parent"
                android:layout_height="wrap_content" />

    </LinearLayout>
</FrameLayout>

Tab.java

public class InitialActivity extends TabActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);

        TabHost th = getTabHost();
        th.addTab(th.newTabSpec("tab_1").setIndicator("Tab1").setContent(R.id.tab1));
        th.addTab(th.newTabSpec("tab_2").setIndicator("Tab2").setContent(R.id.tab2));
        th.addTab(th.newTabSpec("tab_3").setIndicator("Tab3").setContent(R.id.tab3));
    }
}

次に、タブ内の任意のビューで findViewById() を使用するか、それらの間に共有名がある場合は、次のことができますfindViewById(R.id.tab1).findViewById(R.id.text)

于 2009-07-02T19:16:45.920 に答える