如何在单击选项卡Activity的选项卡而不是调用Activity时调用函数

时间:2012-04-18 07:27:10

标签: android tabactivity

抱歉我的英文。很多东西需要学习。

我的应用中有TabActivity。我希望其中一个按钮在单击时显示上下文菜单。

我设法在点击其中一个标签时调用方法。但同时标签调用和活动。这个关闭了当前没有给人留下好印象的那个。

一个例子:

将标签添加到tabhost

    intent = new Intent().setClass(this, NewsActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    spec = tabHost.newTabSpec(TAB_NEWS).setIndicator(getString(R.string.tab_news), res.getDrawable(R.drawable.ic_tab_news)).setContent(intent);
    tabHost.addTab(spec);

如果我没有通过,意图就会出错。

    intent = new Intent().setClass(this, NewsActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    spec = tabHost.newTabSpec(TAB_NEWS).setIndicator(getString(R.string.tab_news), res.getDrawable(R.drawable.ic_tab_news)).setContent(intent);
    tabHost.addTab(spec);

要调用方法,我使用选项卡上的下一个侦听器

tabHost.getChildAt(1).setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            //Somethig to do
            e
            return false;
        }
    });

非常感谢。

1 个答案:

答案 0 :(得分:1)

在标签的OnTouchListener中,首先检查触摸事件是否为点击而不是任何触摸。如果您不想在单击时更改选项卡,请在onTouch中返回true。 例如:

tabHost.getChildAt(1).setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int action = event.getAction();

            if(action == MotionEvent.ACTION_UP)
            {
                //Something to do

                return true; // do this if you dont want the tab to change
            }
            return false;
        }
    });