如何从 Android 中的 Activity 访问默认工具栏?

How do I access the default ToolBar from an Activity in Android?

我正在尝试从内部访问默认 ToolBar 和 Activity 的 onCreateOptionsMenu 函数来更改溢出菜单图标(三点图标).我想使用这个 class.

提供的 setOverflowIcon 方法

我已经阅读了官方文档、Whosebug 和其他网站上的帖子,但一切都失败了。

我试过 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 但我收到一条错误消息说 R.id.toolbar不存在。

您可以从 AppCompatActivity 获取默认工具栏

getSupportActionBar();

使用 xml 创建菜单文件并将其放入 res/menu 文件夹

onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.your_menu, menu);
}

执行 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar) 预计不会起作用,因为 ID 不明确存在。每个 activity-Java class 扩展 Activity (或其直接或间接子 classes),您可以使用它来获取操作栏(可以这么说)。

如果您的 java 文件扩展了 AppCompatActivity,您可以使用 getSupportActionBar() 调用 ActionBar。

Java 个扩展 Activity 的文件需要 getActionBar() 来调用工具栏。

此后您可以执行更改显示 text/title、可绘制背景等操作,以及其他任务。

要了解有关获取操作栏的更多信息,请查看 this link

如果您使用 AppcompatActivity,您应该像这样使用 SupportActionBar

supportActionBar?.title = "My Activity title"

这段代码:Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 仅当您在 xml 中添加了具有 toolbar id 的 Toolbar 时才有效。即使你这样做了,你也应该 setSupportActionBar(yourToolBar) 在做任何事情之前。然后直接用supportActionBar代替。

晚会有点晚了,但可以通过像 androidx.appcompat.R.id.action_bar

这样的 id 来引用默认工具栏
findViewById(androidx.appcompat.R.id.action_bar)