Android onMenuItemClick 收到错误的项目
Android onMenuItemClick receiving wrong item
我有这个菜单,当我创建它时弹出的很好。
<?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;
}
}
});
}
您需要为每个案例添加 break;
关键字。
我有这个菜单,当我创建它时弹出的很好。
<?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;
}
}
});
}
您需要为每个案例添加 break;
关键字。