使用反射时与操作栏交互

发布于 2024-11-07 02:13:09 字数 1532 浏览 1 评论 0原文

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

import 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);
}

问题是我需要在主 Activity 中监听 onTabSelected 的调用,但我不确定如何设置它。我尝试了一些不同的方法但没有成功,非常感谢任何帮助。

In order to keep backwards compatibility I've created a class to access the action bar:

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;
    }

}

And I call it in my Activity class using:

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

The problem is that I need to listen to the calls of onTabSelected in my main activity, but I am not sure how to set it up. I've tried a few different things with no success, any help much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北笙凉宸 2024-11-14 02:13:09

问题是我需要在我的主要活动中监听 onTabSelected 的调用,但我不知道如何设置它。我尝试了一些不同的方法,但没有成功,非常感谢您的帮助。

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

The problem is that I need to listen to the calls of onTabSelected in my main activity, but I am not sure how to set it up. I've tried a few different things with no success, any help much appreciated.

Define an interface. Pass an instance of the interface into getActionBar() as a final parameter (which really ought to be named initActionBar(), since you're not returning an action bar, but, that's just me...). In the various onTab... methods in your TabListener objects, call a corresponding method on your interface. You won't be able to pass the ActionBar.Tab object to the interface (since that's API Level 11+), but between the tag and text properties, you should be able to glean something worth passing that identifies the tab to the activity.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文