Android Studio中如何让评分App功能仅响应指定导航按钮?
修复导航菜单所有按钮均触发评分页面的问题
问题根源
你当前的onNavigationItemSelected方法中,评分功能的代码块直接放在所有switch分支之外,不管点击哪个导航菜单选项,这段代码都会无条件执行,导致三个按钮都打开评分页面。
修复方案
把评分功能的代码移到对应R.id.nav_thumb的case分支下,同时将多个switch合并为一个,让逻辑更清晰:
修改后的MainActivity.java代码:
@Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.nav_policy: Intent policyIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.example.com")); startActivity(policyIntent); break; case R.id.nav_share: Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Sharing URL"); shareIntent.putExtra(Intent.EXTRA_TEXT,"http://play.google.com/store/apps/details?id=com.mydomain.tapp"); startActivity(shareIntent); break; case R.id.nav_thumb: try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + this.getPackageName()))); } catch (android.content.ActivityNotFoundException e) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + this.getPackageName()))); } break; } drawerLayout.closeDrawer(GravityCompat.START); return true; }
修改说明
- 合并原本分散的多个switch语句,统一用一个switch处理所有菜单点击事件,代码更简洁易维护
- 将评分功能的代码块完全移入
case R.id.nav_thumb分支,只有点击「Rate App」按钮时才会执行评分跳转逻辑 - 给Intent变量重命名(比如
policyIntent、shareIntent),避免变量名重复问题,同时提升代码可读性
内容的提问来源于stack exchange,提问作者Marfog509
相关产品推荐
相关产品推荐

