2009-12-21 4 views
7

Я открываю контекстное меню, как это:как вызвать контекстное меню,

private OnClickListener optionsClickListener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
    registerForContextMenu(v); 
    openContextMenu(v); 
    } 
}; 

Как я могу позвонить

registerForContextMenu(v); 
openContextMenu(v); 

внутри моего регулярного обработчика меню здесь:

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()) 
    { 
    case OPTIONS: 
     registerForContextMenu(v); 
     openContextMenu(v); 
     return true; 

где У меня нет взгляда, чтобы пройти?

+1

Вы пытаетесь показать ContextMenu из пункта меню Option? –

+0

Да, это вопрос. – gdonald

+1

Это вполне возможно, просто ваш оригинальный вопрос был неясным и непонятным. Я удивлен, что никто не ответил на это позже, поскольку комментарий делает то, что вы хотите, совершенно ясно. Когда у людей возникает проблема с пониманием вашего вопроса, вы должны отредактировать его, а также ответить на комментарии. – Casebash

ответ

14

Регистрация контекстного меню - это когда вы хотите разрешить пользователю открывать его, долгое нажатие. Если вы хотите открыть его программно, вам просто нужно позвонить openContextMenu. Что касается получения представления, вы можете использовать findViewById, если вы дали ему идентификатор или сохранили его как атрибут в своем классе Activity.

+0

Спасибо. Я заработал. – gdonald

0

У вас есть this, который также является видом.

+0

В контексте, который я описал, «это» - это Activity, а не вид. – gdonald

+1

Что вы делаете с видом в этих методах? Представление, в котором вы проходите, не является вашим основным видом, это представление, которое получило событие, так что кнопка или что-то еще. – CaseyB

+0

onOptionsItemSelected() не предоставляет доступ к представлению. Он обеспечивает доступ к элементу MenuItem. Как мне вызвать registerForContextMenu() и openContextMenu() в контексте onOptionsItemSelected(), где мне предоставляется только MenuItem, а не вид? Как получить текущий вид из MenuItem? item.what? .Что? ? – gdonald

0

Возможно, именно то, что вы ищете, - это submenu, где вы можете всплывать подменю при нажатии на пункт меню.

+0

Нет, это не то, что я пытаюсь сделать вообще. – gdonald

+0

Любая причина, по которой вы ДОЛЖНЫ всплывать в ContextMenu из OptionMenu, а не показывать подменю; с точки зрения UI и Code, они выглядят почти одинаково. Если вы ДЕЙСТВИТЕЛЬНО ДОЛЖНЫ, вы можете перейти в любой вид, например, ImageView, TextView, Button и т. Д. –

+0

Но это помогло мне .. спасибо :) –

Смежные вопросы