使用反射时与操作栏交互

时间:2011-05-16 00:15:37

标签: android reflection android-actionbar

为了保持向后兼容性,我创建了一个类来访问操作栏:

import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.ActionBar.TabListener; import 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的调用,但我不知道如何设置它。我尝试了一些不同的事情但没有成功,任何帮助都非常感激。

1 个答案:

答案 0 :(得分:1)

  

问题是我需要在主要活动中听取onTabSelected的调用,但我不知道如何设置它。我尝试了一些不同的事情但没有成功,任何帮助都非常感激。

定义界面。将接口的实例作为getActionBar()参数传递给final(实际上应该命名为initActionBar(),因为您没有返回操作栏,但是,这只是我... )。在onTab...对象的各种TabListener方法中,在您的界面上调用相应的方法。您将无法将ActionBar.Tab对象传递给接口(因为它的API级别为11+),但在标记和文本属性之间,您应该能够收集值得传递的内容,以便将选项卡标识为活性。