Обработка события щелчка меню в Android - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь настроить событие нажатия для всплывающего меню в Android.Я создал overidden onOptionsItemSelected(), но, похоже, ничего не происходит.Вот файл popupmenu.xml:

popupmenu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/help"
    android:title="Help" />
<item android:id="@+id/information"
    android:title="Information" />
<item android:id="@+id/services"
    android:title="Services" />
<item android:id="@+id/overdose"
    android:title="Overdose" />
</menu>

Вот метод onOptionsItemSelected():

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
        case R.id.help:
            Toast toast = Toast.makeText(this, "Help Works", Toast.LENGTH_SHORT);
            toast.show();
            return true;
        case R.id.information:
            Toast toast2 = Toast.makeText(this, "Information Works", Toast.LENGTH_SHORT);
            toast2.show();
            return true;
        case R.id.services:
            Toast toast3 = Toast.makeText(this, "Services Works", Toast.LENGTH_SHORT);
            toast3.show();
            return true;
        case R.id.overdose:
            Toast toast4 = Toast.makeText(this, "Services Works", Toast.LENGTH_SHORT);
            toast4.show();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

У меня сложилось впечатление, что onOptionsItemSelected() вызывается всякий раз, когда выбирается пункт меню, и для него не требуется атрибут android:onClick в макете для действия.Есть что-то, чего я здесь не хватает?В противном случае всплывающее меню работает отлично.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

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

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

Вы можете добавить этот код в Your MainActivity.java.Или для более обратитесь к этой ссылке. Меню Android

0 голосов
/ 23 ноября 2018

ОБНОВЛЕНИЕ: Я думал, что вы хотите прослушать щелчок опции Toolbar.Вот как прослушать события клика в PopupMenu

popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {  
                public boolean onMenuItemClick(MenuItem item) {  
                    // get id in item parameter and switch case
                    return true;  
                }  
            });  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...