gpt4 book ai didi

java - 将 onLongClickListener 添加到 TabHost android 上的选项卡

转载 作者:行者123 更新时间:2023-11-29 22:09:36 24 4
gpt4 key购买 nike

在我正在开发的应用程序中,如果用户在选项卡上执行长按,我需要一个上下文菜单来显示,这将允许他们关闭选项卡。不过,我似乎找不到将监听器添加到选项卡的方法。我要么需要每个选项卡都有自己的监听器,要么监听器需要能够判断哪个选项卡对其执行了 longClick,因为它并不总是 Activity 选项卡。

有什么想法吗?

最佳答案

我很感激答案已被接受,但是如果您想利用内置的 ContextMenu 功能而不是在 TabWidget 上设置 onLongClickListeners > 本身,您可以按如下方式执行此操作...

例如,我当前的 TabActivityfor 循环中添加选项卡并为上下文菜单注册每个选项卡,我执行以下操作。

for (int tabNumber = 1; tabNumber < 8; tabNumber++) {
...
spec = tabHost.newTabSpec(tag).setIndicator(indicator).setContent(intent);
tabHost.addTab(spec);

View v = tabWidget.getChildAt(tabNumber - 1);
registerForContextMenu(v);
...
}

然后在我的 Activity 中,我只需覆盖 onCreateContextMenu(...)onContextItemSelected(MenuItem 项目)

@Override
public void onCreateContextMenu (ContextMenu menu, View v, ContextMenuInfo menuInfo) {
...
// The parameter v is the actual tab view and not the TabWidget
// this makes it easy to get the indicator text or its tag in order
// to easily identify which tab was long-clicked and build the menu
...
}

@Override
public boolean onContextItemSelected (MenuItem item) {
...
// Process selected item here
...
}

无需在任何 View 上显式设置 OnLongClickListener,因为这是通过调用 registerForContextMenu(...) 完成的。此外,ContextMenu 创建和选择处理全部由 Activity 公开的 ContextMenu 方法为您处理。

除非您需要自己处理所有这些东西(例如,对于自定义上下文菜单布局),否则使用 Activity 的内置内容似乎更容易。

关于java - 将 onLongClickListener 添加到 TabHost android 上的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com