5

以下は、インテント データを含むタブの例です。

デバッグ中に、最初のタブが常にタブホストに追加されることがわかりました。

tabHost.addTab(tabHost.newTabSpec("tab1")
                    .setIndicator("list")
                    .setContent(new Intent(this, List1.class)));

「List1」インテントのoncreateメソッドは、現在のタブであるかどうかに関係なく呼び出されます.tab2を現在のタブとして定義しても、これを修正するにはどうすればよいですか?

public class Tabs3 extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final TabHost tabHost = getTabHost();

        tabHost.addTab(tabHost.newTabSpec("tab1")
                .setIndicator("list")
                .setContent(new Intent(this, List1.class)));

        tabHost.addTab(tabHost.newTabSpec("tab2")
                .setIndicator("photo list")
                .setContent(new Intent(this, List8.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));

        // This tab sets the intent flag so that it is recreated each time
        // the tab is clicked.
        tabHost.addTab(tabHost.newTabSpec("tab3")
                .setIndicator("destroy")
                .setContent(new Intent(this, Controls2.class)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
    }
}
4

2 に答える 2

1

setDefaultTab(1);

別のアクティビティがタブ コンテンツとして使用されている場合、TabActivity で動作していないようです。

この方法の代わりに以下を使用してください。

tabHost.setCurrentTab(1);

これにより、「写真リスト」(つまり、2 番目のタブ)が選択されたタブまたはデフォルトのタブとして設定されます...

于 2010-08-01T21:52:10.777 に答える
0

これと同じ動作も発見しましたが、特定の修正はありません。しかし、私は回避策を知っています。

各タブにアクティビティを添付する代わりに、各タブにビューを添付します。各ビューは同じアクティビティにあるため、データの受け渡しを非常に簡単に処理できます。これにより、インテントを使用して情報を渡す必要もなくなります。さらに、必要に応じてビューを作成 (またはインフレート) し、より細かく制御できます。

がんばれ - スコット

于 2012-06-16T06:02:21.640 に答える