【问题标题】:Changing action bar title dynamically not working动态更改操作栏标题不起作用
【发布时间】:2021-11-19 07:55:17
【问题描述】:

我想在创建片段时动态更改片段中操作栏的文本,但activity?.actionBar?.title = movie.title 不起作用。

我也试过了

activity?.actionBar?.setDisplayShowTitleEnabled(true)
activity?.actionBar?.title = movie.title

【问题讨论】:

  • 改用supportActionBar?.title
  • 当您拨打此行时,请确保动作栏和电影存在
  • 我在一个片段中,我无法像那样访问操作栏,这就是我使用activity.actionbar的原因

标签: android kotlin android-actionbar


【解决方案1】:
  • actionBar 已弃用并替换为 supportActionBar
  • 在片段中使用activity 会返回FragmentActivity,它不直接引用supportActionBar 对象;相反,您需要将其转换为 AppCompatActivity) 或托管此片段的活动的自定义名称。

解决这个问题:

(requireActivity() as AppCompatActivity).supportActionBar?.setDisplayShowTitleEnabled(true)
(requireActivity() as AppCompatActivity).supportActionBar?.title = ...

【讨论】:

  • 谢谢,它成功了,接受了你的回复,但你能告诉我,FragmentActivity 到底是什么,为什么它不引用操作栏?
  • @DragosCiupe FragmentActivityAppCompatActivity 的直接父类;但随着活动类别的发展;从支持库开始,他们将 FragmentActivityAppCompatActivity 子类化;因此改变了一些东西,包括actionBarsupportActionBar;所以; supportActionBar 仅存在于 AppCompatActivity.. 当然支持库现在也已弃用;并替换为androidx;但在 androidx 中,他们没有更改类的名称;但他们创建了类似具有相同类的并行 API 包
  • 好的,这是一个很好的解释,谢谢。不过我有一个新问题,你认为你可以看看吗? stackoverflow.com/questions/70028020/…
  • 当然让我检查一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 2020-11-13
  • 1970-01-01
相关资源
最近更新 更多