Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 菜单显示,但未调用OnCreateOptions菜单()_Java_Android_Android Studio_Menu - Fatal编程技术网

Java 菜单显示,但未调用OnCreateOptions菜单()

Java 菜单显示,但未调用OnCreateOptions菜单(),java,android,android-studio,menu,Java,Android,Android Studio,Menu,菜单在应用程序的工具栏中可见,我可以打开它并查看菜单项,但是没有调用onCreateOptionsMenu()函数,我通过设置断点和调试知道这一点,对于onOptionsItemSelected()函数也是如此,它根本没有被调用。我看过其他关于相同问题的堆栈溢出帖子,但我似乎没有犯过任何常见的错误。有人知道问题是什么以及如何解决吗 MainActivity.java @Override public boolean onCreateOptionsMenu(Menu menu) { Men

菜单在应用程序的工具栏中可见,我可以打开它并查看菜单项,但是没有调用
onCreateOptionsMenu()
函数,我通过设置断点和调试知道这一点,对于
onOptionsItemSelected()
函数也是如此,它根本没有被调用。我看过其他关于相同问题的堆栈溢出帖子,但我似乎没有犯过任何常见的错误。有人知道问题是什么以及如何解决吗

MainActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId())
    {
        case R.id.menuItem1:
            Toast.makeText(this, "menuItem1 selected", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.menuItem2:
            Toast.makeText(this, "menuItem2 selected", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.menuItem3:
            Toast.makeText(this, "menuItem3 selected", Toast.LENGTH_SHORT).show();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
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/menuItem1"
        android:title="One"
        app:showAsAction="never"/>

    <item
        android:id="@+id/menuItem2"
        android:title="Two"
        app:showAsAction="never"/>

    <item
        android:id="@+id/menuItem3"
        android:title="Three"
        app:showAsAction="never"/>

</menu>

如果删除此行,工具栏中的菜单将消失。不知道这是否有帮助或与我的问题有任何关系,但只是将其放在那里,让您知道。

在oncreate函数中,放以下行:

 setSupportActionBar(bottomAppBar)
有关更多详细信息,请参阅此代码:


使用
android.support.v7.widget.Toolbar
会起作用

我得到一个错误:
AppcompatActivity中的setSupportActionBar(androidx.appcompat.widget.Toolbar)不能应用于(android.widget.Toolbar)
,而这段代码可能会回答这个问题,提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。@AriCooper Davis同意,但由于我的问题尚未解决,它没有回答我的问题。更改了从
android.widget.Toolbar导入的内容
androidx.appcompat.widget.Toolbar于是这个解决方案就起作用了。我得到了这个错误:
AppcompatActivity中的setSupportActionBar(androidx.appcompat.widget.Toolbar)不能应用于(android.widget.Toolbar)
这个链接肯定会帮助你。但是我在我的应用程序中没有使用BottomAppBar
 setSupportActionBar(bottomAppBar)
 Toolbar toolbar = findViewById(R.id.toolbar);
 setSupportActionBar(toolbar);
 getSupportActionBar().setDisplayShowTitleEnabled(false);
setSupportActionBar(toolBar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);