Android onMenuItemClick получает неправильный элемент - PullRequest
1 голос
/ 05 августа 2020

У меня есть это меню, которое отлично всплывает, когда я его создаю.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/day"
        android:title="Day" />
    <item
        android:id="@+id/week"
        android:title="Week" />
    <item
        android:id="@+id/month"
        android:title="Month" />
    <item
        android:id="@+id/year"
        android:title="Year" />
</menu>

По какой-то причине onMenuItemClick дает мне только «Год», независимо от того, на какой элемент я нажимаю. Это действительно странная проблема, и я понятия не имею, почему это происходит.

public void showMenu(View v) {
    PopupMenu popup = new PopupMenu(getContext(), v);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.date_range_menu, popup.getMenu());
    popup.show();

    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.day:
                    ((MainActivity) requireActivity()).toast("Day");
                    changeDateRange(DateRange.DAY);
                case R.id.week:
                    ((MainActivity) requireActivity()).toast("Week");
                    changeDateRange(DateRange.WEEK);
                case R.id.month:
                    ((MainActivity) requireActivity()).toast("Month");
                    changeDateRange(DateRange.MONTH);
                case R.id.year:
                    ((MainActivity) requireActivity()).toast("Year");
                    changeDateRange(DateRange.YEAR);
                default:
                    return false;
            }
        }
    });
}

1 Ответ

1 голос
/ 05 августа 2020

Вам необходимо добавить ключевое слово break; для каждого случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...