2011-02-05 6 views
3

Я использую Android для приложения. У меня есть деятельность, где я создаю меню опций, как показано нижеОткройте контекстное меню, нажав на опции меню.

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

меню загружается из файла XML:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Item1" android:id="@+id/item1" /></menu> 

Когда я щелкаю по пункту 1, я использую onOptionsItemSelected на моей деятельности в работа после такого щелчка:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
    case R.id.item1 : 
     // here, I would like to open a contextual menu 
     return true; 
    default : 
     return super.onOptionsItemSelected(item); 
    } 
} 

Итак, когда пользователь нажимает на пункт 1, я хотел бы открыть контекстное меню. Во-первых, я не знаю, можно ли открыть контекстное меню напрямую, не используя позицию удержания на экране, как показано в нескольких учебных пособиях в Интернете.

Если возможно, как я могу открыть контекстное меню таким образом?

Я думал использовать registerForContextMenu() и openContextMenu() в случае с моим товаром 1, но в каком представлении должен быть указан параметр?

Если у кого-то есть идея о том, как это сделать, я хотел бы знать, как я должен это делать.

ответ

4

Если вы действительно хотите иметь контекстное меню, я бы использовал контекстное меню, так как оно было разработано на Android, сделав длинное нажатие на заданный элемент. Люди привыкли к этому, и приложения в этом не должны отличаться.

Альтернатива немного сложнее. Что вы можете сделать, так это настроить ваше меню в отдельном упражнении, которое вы создаете в виде диалогового окна (вы знаете, с выцветшим полупрозрачным фоном). Это можно легко сделать, применяя Theme.Dialog стиль вашей деятельности в файле manifest.xml:

<activity android:name=".activities.TagPopupActivity" 
      android:label="Tagging" android:theme="@android:style/Theme.Dialog"> 
       ... 
</activity> 

В качестве альтернативы вы можете также непосредственно создавать диалоговое окно, как это описано here. Затем вы получаете контекст (т. Е. Щелчок списка) путем внедрения соответствующего прослушивателя кликов в свой основной список, а затем, когда пользователь нажимает на элемент, вы извлекаете его идентификатор и упаковываете его в пакет, который вы пересылаете в свое «меню», -активность, созданная как всплывающее диалоговое окно.

+1

Спасибо за ваш ответ. На самом деле, я начинаю с Android. Поэтому я не очень хорошо знаю, что лучше всего делать. В моей голове было 2 возможности. Во-первых, я создал контекстное меню, но, по-видимому, это не очень хорошая идея для пользователя. Во-вторых, я думал начать новую деятельность, нажав на элемент, в котором я показываю выбор, который я хотел бы предложить пользователям в контекстном меню. Возможно, это лучшая идея. Итак, я думаю, что я собираюсь закодировать вторую идею. – sylsau

+3

Даже собственные приложения Google открывают контекстные меню из элементов меню, поэтому я не думаю, что это правило, что длительные нажатия - это правильный способ его реализации. –

+0

Где находится ответ на «Открыть контекстное меню, нажав на пункт меню пункт»? –

2

Я знаю, что сообщение устарело, но вот еще одно решение (быстрое, но не очень сексуальное).

Добавьте фиктивный вид с установленным видимостью и используйте это представление, чтобы вызвать контекстное меню.

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