Android开发:如何在ActionBar菜单各选项中打开对应Activity?
解决ActionBar菜单点击跳转Activity的问题
嘿,这事儿其实挺简单的,咱们一步步来把它搞定!
核心思路:用Intent启动目标Activity
Android里跨页面跳转的标准方式就是用Intent,你只需要在菜单选项的case分支里创建对应的Intent,然后调用startActivity()就行。
修改你的onOptionsItemSelected方法
我帮你把代码补全,你可以直接参考:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.about_us: // 创建Intent,参数是当前上下文和要打开的Activity类 Intent aboutIntent = new Intent(this, AboutUsActivity.class); // 启动目标Activity startActivity(aboutIntent); return true; // 表示该事件已被处理,无需再传递 case R.id.about_measures: // 同理,替换成你的AboutMeasuresActivity Intent measuresIntent = new Intent(this, AboutMeasuresActivity.class); startActivity(measuresIntent); return true; case R.id.feedback: Intent feedbackIntent = new Intent(this, FeedbackActivity.class); startActivity(feedbackIntent); return true; case R.id.rate: // 如果是跳转到应用商店评分,这里给你个参考实现 try { // 优先打开本地应用商店 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName()))); } catch (ActivityNotFoundException e) { // 本地商店不存在的话,跳转到网页版 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()))); } return true; default: // 处理未匹配的选项,交给父类处理 return super.onOptionsItemSelected(item); } }
关键注意事项
- 必须注册Activity:别忘在
AndroidManifest.xml里给你的AboutUsActivity(以及其他目标Activity)注册,不然运行时会崩溃:<activity android:name=".AboutUsActivity" /> - return true的作用:每个处理完的case都要return true,告诉系统这个菜单点击事件已经被处理了,不用再往下传递。
- 评分功能的特殊处理:因为是跳转到外部应用,要捕获
ActivityNotFoundException,避免用户设备上没有应用商店时崩溃。
这样改完之后,点击对应的菜单选项就能顺利打开目标Activity啦!
内容的提问来源于stack exchange,提问作者Angelbreath
相关产品推荐
相关产品推荐

