我试图让我的应用程序在顶部显示 3 点菜单按钮,这将导致一个按钮,单击该按钮将显示 menu.xml 中描述的选项(是的,我在带有菜单资源文件的菜单文件夹中创建了它)
主要活动:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.menu, menu);
//getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
//I have also tried return true
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case R.id.itemOne:
Toast.makeText(this, "settings", Toast.LENGTH_SHORT).show();
return true;
case R.id.itemTwo:
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
default:
return super.onOptionsItemSelected(item);
}
}
菜单.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"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/itemOne"
android:icon="@drawable/baseline_settings_24"
android:title="Settings" />
<item
android:id="@+id/itemTwo"
android:icon="@drawable/baseline_logout_24"
android:title="Logout" />
</menu>
我已经诚实地尝试了这个世界上的所有内容,我已经浏览了所有以前有些相关的线程,它们都给出了我在 menu.xml 和 MainActivity 中实现的答案,我只是不明白为什么它不起作用或者我应该搜索什么做这样的事情。
谢谢!!!
经过一番研究,我要感谢 dominicoder 的初步回答,所以对于任何遇到同样问题的人,这就是你应该做的来解决它: 首先进入 AndroidManifest 并更改 android 主题 -
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
然后在 MainActivity 中将它们放入 onCreate 中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
}
要显示您放入 menu.xml 中的图标,您需要将一行粘贴到 onCreateOptionsMenu 中,当您收到错误抑制它时,应该看起来像这样和结尾:
@SuppressLint("RestrictedApi")
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.menu, menu);
if (menu instanceof MenuBuilder) {
((MenuBuilder) menu).setOptionalIconsVisible(true);
}
return super.onCreateOptionsMenu(menu);
}
希望有帮助)