0

フラグメントタブをセットアップするための次のコードがあります。

mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
        mTabHost.addTab(
                mTabHost.newTabSpec("tab1").setIndicator("Latest"), MainFragment.class,
                getBundle(0));
        mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Today"), MainFragment.class,
                getBundle(1));
        mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Week"), MainFragment.class,
                getBundle(2));
        mTabHost.addTab(mTabHost.newTabSpec("tab4").setIndicator("Month"), MainFragment.class,
                getBundle(3));
        mTabHost.addTab(mTabHost.newTabSpec("tab5").setIndicator("Year"), MainFragment.class,
                getBundle(4));

ボタンをクリックすると、プログラムでタブを読み込む必要があります。CurrentTab(1); を設定できます。setCurrentTab(0); リロードを強制しますが、それは良い方法ではありません。

フラグメントをロードするために、フラグメント内に reload メソッドを含めることができます。しかし、クラス名をタブホストに渡すだけなので、それらを参照する方法がわかりません

4

1 に答える 1

0

setCurrentTab() はそれほど悪くはありません。タブを切り替えるには良い方法です。タブが変更されると、ユーザーが他のタブをクリックするのと同じように、リスナー OnTabChangeListener が起動されます。

このボタンをクリックしたときにチェックまたは何らかの中間タスクを実行する必要がある場合は、中間メソッドを実行できますが、タブを変更する最後の方法は setCurrentTab() になります。

私のプロジェクトでは、onTabChangeListener がすべてスマートな部分を行うので、フラグメント スタックについて心配する必要はありません。正しいスタックを取得する (別のフラグメントに戻す) 必要がある場合は、FragmentTransaction で「置換」を使用して正しいスタックを維持できます。

于 2013-10-01T11:21:09.290 に答える