java - 开关盒在菜单项上不起作用 - 为什么?
问题描述
我试图在单击菜单中的项目时执行操作,并且我使用 switch case 来循环项目 ID
我试图删除 break 并尝试使用代码不起作用,每次单击菜单中的任何项目时,它都会执行菜单中的最后一种方法,即注销
@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);
}
解决方案
为什么要删除 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
方法中正确地膨胀了菜单。
推荐阅读
- docker - AWS Codebuild 仅在未进行任何更改时使用缓存的 Docker 层
- rust - 切换可选的构建依赖项和使用功能构建依赖项
- cron - 用于在 Apache Airflow 中安排自触发 DAG 的 crontab 表达式
- sql - 如何在 Group By 查询中显示零值
- spring-boot - 为 Spring Boot 应用程序实现状态管理
- cmake - 如何强制 cmake 不配置依赖目录?
- reactjs - 从文件夹中导入所有图像,位置地址在本地文件中
- oracle - 无法获取 jdbc 连接 java.sql.SQLTransientConnectionException: HikariPool-1-Connection is not available, request timed out after 30000ms
- scheme - 原始函数方案中的“第三”是什么概念?
- django - 一开始如何对相关对象进行排序?