首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于选项卡的Android onclicklistener

用于选项卡的Android onclicklistener
EN

Stack Overflow用户
提问于 2012-05-17 06:38:27
回答 2查看 19.6K关注 0票数 4

我试图解决这个问题的时间比我愿意承认的要长。我希望为我的选项卡设置一个onClicklistener,这样即使用户在该选项卡上并单击它,选项卡也会重新加载。有人能指出我的错误吗?下面是我使用的代码,这些代码是从堆栈溢出的例子中拼凑出来的,所以到目前为止谢谢你!我使用getTabHost().setCurrentTab(3)将其设置为仅在选项卡3上运行,但是如何获得它,以便它调用用户单击的特定选项卡?

我一直在使用这个作为参考:OnClickListener on Tabs not working

代码语言:javascript
复制
public class DamTabs extends TabActivity implements OnClickListener{
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost(); // The activity TabHost


    Intent intent = new Intent(this, Featured.class);
    tabHost.addTab(tabHost.newTabSpec("Tab 1")
            .setIndicator("Featured", res.getDrawable(R.drawable.ic_tab_main))
            .setContent(intent));

    Intent intent2 = new Intent(this, Deals.class);
    tabHost.addTab(tabHost.newTabSpec("Tab 2")
            .setIndicator("Deals", res.getDrawable(R.drawable.ic_tab_setup))
            .setContent(intent2));

    Intent intent3 = new Intent(this, Events.class);
    tabHost.addTab(tabHost.newTabSpec("Tab 3")
            .setIndicator("Events", res.getDrawable(R.drawable.ic_tab_setup))
            .setContent(intent3));

    getTabWidget().getChildAt(3).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (getTabHost().getCurrentTabTag().equals(sort)) {
                getTabHost().setCurrentTab(3);
            }
        }
    });

} //End of onCreate
EN

回答 2

Stack Overflow用户

发布于 2012-05-17 07:41:58

如果我理解你的问题,我认为你应该使用setOnTabChangedListener()方法。如下所示:

代码语言:javascript
复制
mTabHost.setOnTabChangedListener(new OnTabChangeListener() {

        public void onTabChanged(String tabId) {
            Log.d(debugTag, "onTabChanged: tab number=" + mTabHost.getCurrentTab());

            switch (mTabHost.getCurrentTab()) {
            case 0:
                //do what you want when tab 0 is selected
                break;
            case 1:
                //do what you want when tab 1 is selected
                break;
            case 2:
                //do what you want when tab 2 is selected
                break;

            default:

                break;
            }
        }
    });

并移除implements OnClickListener

票数 7
EN

Stack Overflow用户

发布于 2012-05-17 06:51:28

代码语言:javascript
复制
getTabWidget().getChildAt(3).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (getTabHost().getCurrentTabTag().equals(sort)) {
            Events.reloadMe()
        }
    }
});

我将在您想要重新加载的活动中创建一个静态方法,并像这样调用它。我认为这是解决它的最简单的方法。要使用它,您需要在活动中使用一些私有静态变量。并确保这些私有静态对象不为空。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10627755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档