java - 为什么我创建的菜单不适用于新的 Intent
问题描述
我是android开发的新手。
我创建了一个 MenuItem 以在单击时启动一个新活动 (SettingsActivity)。我没有错误,一切正常,除了当我单击创建的菜单时,它什么也没做。
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.visualizer_menu, menu);
return true;
}
public boolean onOptionSelected(MenuItem item){
int itemThatWasClicked = item.getItemId();
if (itemThatWasClicked == R.id.action_settings){
Intent settingsActivityIntent = new Intent(this, SettingsActivity.class);// using explicity intent to open new activity
startActivity(settingsActivityIntent);
return true;
}
return super.onOptionsItemSelected(item);
}
我曾尝试在 中添加 Toast onOptionSelected()
,但没有成功。菜单不仅仅是响应
我的 SettingsActivity.java 现在有以下代码
package android.example.com.visualizerpreferences;
import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
ActionBar actionBar = this.getSupportActionBar();
if (actionBar != null){
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
if(id == android.R.id.home){
NavUtils.navigateUpFromSameTask(this);
}
return super.onOptionsItemSelected(item);
}
}
下面是我的菜单资源文件中的visualizer_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
</menu>
解决方案
更换你的
public boolean onOptionSelected(MenuItem item){
到
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
推荐阅读
- java - 在 JUnit 测试之前我应该如何启动服务器?
- sqlite - 涵盖精确匹配和小于/大于sqlite中查询的最佳索引
- angular - http获取请求的角度获取值选择菜单
- visual-studio-code - 两个项目的Vscode格式“保存时”不同
- wordpress - 使用图片作为联系表格 7 上的单选按钮,但未在邮件中接收图片
- java - 尝试针对 PostgreSQL 数据库为 Spring 开发设置 H2 数据库
- c++ - new int[100] 和 new int[100]() 之间的区别;
- c++ - opengl不填充多边形
- scala - 每组在 Spark-Scala 中查找百分位数
- vue.js - nuxtjs/google-tag-manager 仅在获得 cookie 同意后才添加谷歌分析