0

下位互換性を維持するために、アクション バーにアクセスするためのクラスを作成しました。

android.app.ActionBar をインポートします。android.app.ActionBar.Tab をインポートします。android.app.ActionBar.TabListener をインポートします。android.app.FragmentTransaction をインポートします。

public class ReflectionBar{

    static void getActionBar(Activity a) {

        ActionBar bar = a.getActionBar();

        bar.addTab(bar.newTab().setText("Tab 1").setTabListener(new TabListener() {

                @Override
                public void onTabReselected(Tab tab, FragmentTransaction ft) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onTabSelected(Tab tab, FragmentTransaction ft) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onTabUnselected(Tab tab, FragmentTransaction ft) {
                    // TODO Auto-generated method stub

                }
            }));


    bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_USE_LOGO);
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setDisplayShowHomeEnabled(true);
    // remove the activity title to make space for tabs
    bar.setDisplayShowTitleEnabled(false);

    return;
    }

}

そして、次を使用して Activity クラスで呼び出します。

if (android.os.Build.VERSION.SDK_INT>10){
    ReflectionBar bar = new ReflectionBar();
    bar.getActionBar(this);
}

問題は、メイン アクティビティで onTabSelected の呼び出しをリッスンする必要があることですが、その設定方法がわかりません。私はいくつかの異なることを試しましたが、成功しませんでした。

4

1 に答える 1

1

問題は、メインアクティビティでonTabSelectedの呼び出しをリッスンする必要があることですが、設定方法がわかりません。私はいくつかの異なることを試みましたが成功しませんでした、どんな助けでも大いに感謝します。

インターフェイスを定義します。インターフェイスのインスタンスをパラメータgetActionBar()としてに渡しfinalます(アクションバーを返さないため、実際には名前initActionBar()を付ける必要がありますが、それは私だけです...)。オブジェクトのさまざまなonTab...メソッドでTabListener、インターフェイスの対応するメソッドを呼び出します。オブジェクトをインターフェースに渡すことはできませんがActionBar.Tab(APIレベル11以降)、タグとテキストのプロパティの間で、アクティビティへのタブを識別する、渡す価値のあるものを収集できるはずです。

于 2011-05-16T18:41:36.020 に答える