Android标签页的点击监听器

4
我已经尝试解决这个问题很长时间了。我想为我的选项卡设置一个 onClicklistener,以便即使用户在该选项卡上并单击它,该选项卡也会重新加载。请问有人能指出我的错误吗?下面是我使用的代码,由来自 stack overflow 的示例组成,所以感谢到目前为止的帮助!我正在使用 getTabHost().setCurrentTab(3) 将其设置为仅在选项卡 3 上运行,但是如何使其调用用户单击的特定选项卡呢?
我一直在参考这个: OnClickListener on Tabs not working
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
2个回答

7

如果我理解你的问题,我认为你应该使用 setOnTabChangedListener() 方法。可以这样做:

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


嘿,谢谢回复。我回家后会试一下并告诉你结果 :) - James

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

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

嘿,谢谢回复。我回家后会试一下并告诉你结果 :) - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接