【问题标题】:How do I access the default ToolBar from an Activity in Android?如何从 Android 中的 Activity 访问默认工具栏?
【发布时间】:2018-09-20 12:49:48
【问题描述】:

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

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

我尝试了例如 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 但我收到一条错误消息,指出 R.id.toolbar 没有'不存在。

【问题讨论】:

标签: java android android-activity kotlin toolbar


【解决方案1】:

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

supportActionBar?.title = "My Activity title"

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

【讨论】:

  • 但这会返回一个 ActionBar 而不是 ToolBar。
【解决方案2】:

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

如果你的java文件扩展了AppCompatActivity,你可以使用getSupportActionBar()来召唤ActionBar。

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

之后,您可以执行更改显示的文本/标题、背景可绘制对象等操作,以及其他任务。

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

【讨论】:

  • 但这会返回一个 ActionBar 而不是 ToolBar。
【解决方案3】:

聚会有点晚了,但默认工具栏可以由像 androidx.appcompat.R.id.action_bar 之类的 id 引用

findViewById(androidx.appcompat.R.id.action_bar)

【讨论】:

    【解决方案4】:

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

    getSupportActionBar();

    【讨论】:

    • 你为什么添加新答案,只是更新(编辑)以前的一个
    • 但这会返回一个 ActionBar 而不是 ToolBar。
    【解决方案5】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 2010-10-24
      相关资源
      最近更新 更多