Android 设置支持操作栏和工具栏。充气菜单不';我们不能一起工作吗?

Android 设置支持操作栏和工具栏。充气菜单不';我们不能一起工作吗?,android,android-actionbar,toolbar,android-toolbar,Android,Android Actionbar,Toolbar,Android Toolbar,调用setSupportActionBar并按如下方式打开菜单会导致不显示菜单: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupport

调用
setSupportActionBar
并按如下方式打开菜单会导致不显示菜单:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(myToolbar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        myToolbar.inflateMenu(R.menu.my_menu)


我知道另一种方法是使用传统的创建选项菜单方法。 另一种选择是删除行
setSupportActionBar
,但我需要显示displayHomeAsUpEnabled


可以同时使用
myToolbar.inflateMenu()
setSupportActionBar
吗?还是不兼容?

当您使用
setSupportActionBar()
时,是的,您必须单独使用ActionBar API并直接操作工具栏,无论是通过添加菜单还是其他更改,都不受支持

如果您不想使用ActionBar API,那么不要调用
setSupportActionBar
,直接使用工具栏API(这些都是ActionBar API调用的,因此工具栏API已经是ActionBar API的超集)

工具栏有自己的API来处理导航按钮(这是
displayHomeAsUpEnabled
插入的)

您可以通过将向上图标添加到工具栏来利用这一点:

<androidx.appcompat.widget.Toolbar
  android:id="@+id/myToolbar"
  android:layout_width="0dp"
  android:layout_height="?attr/actionBarSize"
  android:background="?attr/colorPrimary"
  app:layout_constraintEnd_toEndOf="parent"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintTop_toTopOf="parent"
  app:navigationIcon="?attr/homeAsUpIndicator" />

如果您使用的是工具栏,则不需要
displayHomeAsUpEnabled
,它有自己的导航按钮API。@ianhanniballake谢谢,但我应该使用什么?请记住,此活动不是使用架构组件的导航。谢谢!不幸的是,没有什么能阻止我们尝试将现有的API与新的API结合起来。还有很多问题/答案,甚至官方的Android文档都声明要使用setSupportActionBar+setDisplayHome,以便在工具栏中显示向上按钮。如果这不再是推荐的方法,那么最好在文档中说明这一点。我的意思是,如果你在这个答案中已经解释了,那么使用工具栏和setSupportActionBar+setDisplayHome有什么意义呢。
<?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/test"
        android:title="Test"
        app:showAsAction="always" />
</menu>
<androidx.appcompat.widget.Toolbar
  android:id="@+id/myToolbar"
  android:layout_width="0dp"
  android:layout_height="?attr/actionBarSize"
  android:background="?attr/colorPrimary"
  app:layout_constraintEnd_toEndOf="parent"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintTop_toTopOf="parent"
  app:navigationIcon="?attr/homeAsUpIndicator" />
myToolbar.setNavigationOnClickListener {
  // handle the navigation button
}