1

ビュー付きのタブの使用に少し問題があります。まず、タブがアクティビティで使用されるサンプルコードをコピーしました。

私のLayoutFileは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">
        <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"
            android:padding="5dp" />
    </LinearLayout>
</TabHost>

そしてこれは私のJavaコードです:

public class MyActivity extends TabActivity{
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main);
        TabHost tH = getTabHost();

        Indent intent = new Intent().setClass(this, AnotherActivity.class);

        // Initialize a TabSpec for each tab and add it to the TabHost
        //TextView Test = new TextView(this);
        //Test.setText("test");

        tH.addTab(tH.newTabSpec("t1").setIndicator("Tab1").setContent(intent));
        tH.setCurrentTab(0);
    }
}

そして、これは期待どおりに機能します。しかし、TextView-linesのコメントを解除し、setContent(intent)ではなくsetContent(Test.getId())を呼び出すと、アプリがクラッシュします。また、layoutfileにtextviewを作成し、setContent(R.id.test)を呼び出そうとしましたが、これもクラッシュします。

したがって、これは1つの問題です。

2番目のポイントはです。タブコンテンツを表すこれらのクラスのメソッドを呼び出せるようにしたいので、アクティビティを使用したくありません。ですから、私の最初のアイデアは、ビューからいくつかのクラスを派生させることです。タブごとに1つ、IDを渡します。ただし、そのため、上記のコードサンプルを最初に機能させる必要があります。

あいさつうざく

4

1 に答える 1

0

TextViewレイアウトファイルでを試したと言っていましたが、これでうまくいくはずです...

次のようにセクションを変更FrameLayoutします...

<FrameLayout
    android:id="@android:id/tabcontent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp" >
    <TextView 
        android:id="@+id/test"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:text="TEST" />
</FrameLayout>

次に、コードで次のことを行います...

tH.addTab(tH.newTabSpec("t1").setIndicator("Tab1").setContent(R.id.test));
于 2012-04-15T11:50:32.253 に答える