2010-12-10 2 views
1

Halo,Как получить ContextView, нажав на меню опций

Мой Ideia чтобы показать контекстное меню, нажав на одну из меню опций.

Я не думаю, что это будет довольно сложно, но я не могу получить представление в классе OptionsMenu.

Так что на самом деле это просто вызов showContextMenu() в классе OptionsMenu.

Может ли кто-нибудь дать мне подсказку?

ty!

+0

Почему? Это не контекстное меню. Контекстные меню имеют контекст. Что вы пытаетесь сделать точно? – Falmarri

+0

Я пытаюсь показать контекстное меню, не нажав на один конкретный элемент в действии, а нажав на одно из меню параметров. – dwbrito

+0

Falmarri - это правильно. Если вы хотите контекстное меню при нажатии на меню параметров, это означает, что у вас есть выбор. По большей части Android не рекомендует поддерживать выбор. – dhaag23

ответ

1

Это можно вызвать в контекстном меню, кроме длительного нажатия. Если вы реализуете ваши пункты меню в вашей деятельности, используя внутренний класс, например, вы должны быть в состоянии назвать свое контекстное меню:

yourView.showContextMenu();

Не забудьте зарегистрировать контекстное меню в OnCreate:

registerForContextMenu(yourView);

+0

Это то, что я пытаюсь сделать, на самом деле. Но как можно получить View v (который поставляется с ListItemClick -> protected void onListItemClick (ListView l, View v, int position, long id) в onMenuItemSelected -> public void onMenuItemSelected (int featureId, ItemItem item)? – dwbrito

0

Моя идея - показать контекстное меню, нажав на одно из меню опций.

AFAIK, вы не можете отображать контекстное меню из длинного нажатия на выбор меню опций.

Я не думаю, что это будет довольно сложно, но я не могу получить представление в классе OptionsMenu.

View не подвергается действию.

Единственный способ буквально сделать то, что вы ищете, - не использовать стандартное меню опций Android. Вы можете наблюдать за клавишей MENU через onKeyDown() в своей деятельности, после чего вы можете отображать все, что хотите, включая что-то, что поддерживает контекстные меню.

Однако контекстные меню не особенно популярны среди пользователей, просто потому, что они не очень доступны для поиска. Пользователи никогда не читают документацию, даже если она поставляется, и они не склонны случайно удалять экран, чтобы увидеть, появится ли меню. Они будут еще менее склонны принимать решение об удержании поддельного варианта меню выбора, чтобы увидеть, появится ли контекстное меню.

Следовательно, я действительно рекомендую вам рассмотреть другой подход, улучшающий удобство использования.

1

Наконец-то сделал это, и это было довольно простое решение.

В основном я передаю представление в конструктор OptionsMenu.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    this.setContentView(R.layout.activity_event); 

    View v = findViewById(R.id.activity_event); 

    registerForContextMenu(v); 

    options = new Options(getApplicationContext(), getMenuInflater(), v); 

    fillData(); 
} 

...

private class Options extends ActivityOptionsMenu { 
     public Options(Context c, MenuInflater mi, View v) { 
      super(c, mi, v); 
     } 
    } 

...

 private abstract class ActivityOptionsMenu { 
    ... 

     public void onMenuItemSelected(int featureId, MenuItem item) { 
      switch (item.getItemId()) { 
      case R.id.directions: 
       v.showContextMenu(); 
      } 
     } 
    } 

Спасибо за помощь.

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