当我在菜单中单击项目时,我试图执行操作,并且我使用了开关盒来遍历项目ID
我试图删除中断并尝试播放代码不起作用,并且每次我单击菜单中的任何项目时,它都会执行菜单中的最后一种方法,即注销
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_all_users:
// complete later
case R.id.menu_account_setting:
Intent settingIntent = new Intent(MainActivity.this, SettingActivity.class);
startActivity(settingIntent);
finish();
case R.id.menu_log_out:
auth.signOut();
Intent loginIntent = new Intent(MainActivity.this , LoginActivity.class);
loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(loginIntent);
finish();
default:
break;
}
return super.onOptionsItemSelected(item);
}
答案 0 :(得分:1)
为什么您删除了break语句,请尝试这种方式:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.menu_all_users:
return true;
case R.id.menu_account_setting:
Intent settingIntent = new Intent(MainActivity.this, SettingActivity.class);
startActivity(settingIntent);
finish();
return true;
case R.id.menu_log_out:
auth.signOut();
Intent loginIntent = new Intent(MainActivity.this , LoginActivity.class);
loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(loginIntent);
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
还交叉检查所有ID是否都存在于xml中,并且您正在使用onCreateOptionsMenu
方法适当地夸大菜单。
答案 1 :(得分:0)
我相信您会在所有情况下都丢失break语句(默认情况除外)。
答案 2 :(得分:-1)
这段代码看起来不错。也许您错过了菜单目录中的某些内容。因此,您可以检查this以使其完美实现。 希望对您有帮助。
答案 3 :(得分:-1)
谢谢大家,我使用if语句代替了switch并解决了问题
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.menu_all_users){
sendToAllUsers();
}else if(item.getItemId() == R.id.menu_account_setting){
GoToSetting();
}else if(item.getItemId() == R.id.menu_log_out){
Logout();
}
return super.onOptionsItemSelected(item);