android onclicklistener 无作用,android – 选项卡上的OnClickListener不起作用

问候,

我在点击TabActivity当前选中的标签时尝试获取Click – 事件.只有在更改选项卡时才会调用onTabChangedHandler,而不是在单击当前活动的选项卡时调用.调试器告诉我在TabHost中为TabWidget注册了onClickListener.

我在注册错误的视图吗?

此外,我无法为选项卡创建上下文菜单,仅针对其内容,这个问题是否相关?

public class TestDroidViewTab extends TabActivity

implements TabContentFactory

, OnTabChangeListener, OnClickListener {

private static final String LOG_KEY = "TEST";

ListView listView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

final TabHost tabHost = getTabHost();

TabHost.TabSpec ts = tabHost.newTabSpec("ID_1");

ts.setIndicator("1");

ts.setContent(this);

tabHost.addTab(ts);

ts = tabHost.newTabSpec("ID_2");

ts.setIndicator("2");

ts.setContent(this);

tabHost.addTab(ts);

ts = tabHost.newTabSpec("ID_3");

ts.setIndicator("3");

ts.setContent(this);

tabHost.addTab(ts);

tabHost.setOnClickListener(this);

tabHost.setOnTabChangedListener(this);

}

public void onClick(View v) {

Log.d(LOG_KEY, "OnClick");

}

public void onTabChanged(String tabId) {

Log.d(LOG_KEY, "OnTabChanged");

}

解决方法:

如果要查看单击特定选项卡,则需要将监听器添加到选项卡本身,而不是TabHost.

选项卡实现中的视图层次结构是:

> TabHost

> TabWidget

>(标签)

>(标签)

> FrameLayout

在运行时通过调用tabHost.addTab(tabHost.newTabSpec(“”))添加选项卡;

然后,您可以通过调用以下方法获取各个选项卡的句柄:getTabWidget().getChildAt(4);

实质上,您将OnClickListener添加到TabWidget的子级.您现在可以获取单个标签上的点击次数.但是,这将覆盖单击选项卡时更改内容的默认行为.因此,要使您的内容发生变化,您的OnClickListener将需要为您执行此操作.

这是一个完整的示例,它允许您拦截click事件,并更改选项卡下面的内容:

final String myTabTag = "My Tab";

final int myTabIndex = 3;

getTabHost().addTab( getTabHost().newTabSpec(myTabTag) );

getTabWidget().getChildAt(myTabIndex).setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if (getTabHost().getCurrentTabTag().equals(myTabTag)) {

getTabHost().setCurrentTab(myTabIndex );

}

}

});

标签:android,onclick,android-tabhost

来源: https://codeday.me/bug/20190926/1821914.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值