Я понимаю, что ответ был принят, но если вы хотите использовать встроенный ContextMenu
возможностей, а не набор onLongClickListeners
на самом TabWidget
, вы можете сделать это следующим образом ...
Пример, мой ток TabActivity
добавляет вкладки в цикл for
и регистрирует каждый для контекстного меню. Я делаю следующее.
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 item)
@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
...
}
Там нет необходимости установить OnLongClickListener
на любые мнения, в явном виде, как это делается при вызове registerForContextMenu(...)
. Кроме того, обработка и выбор ContextMenu
обрабатываются для вас методами ContextMenu
, выставленными Activity
.
Если вам не нужно обрабатывать все эти вещи самостоятельно (например, для оформления пользовательского контекстного меню), проще всего использовать то, что находится в buck-in, до Activity
.
Вы имеете в виду длительное нажатие в любом месте вкладки или только на вкладке вкладки внутри TabHost? –
Как раз на кнопке на TabHost было бы лучше, но если это невозможно, то где-нибудь на вкладке будет выполнимо. – nick