如何在 kotlin 中更改片段 class 中的 ActionBar 标题?

How to Change ActionBar title in fragment class in kotlin?

我是 android kotlin 开发的新手。我尝试了以下代码来更改我的 fragment.It 的操作栏标题,而不是 working.Please 帮助

override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)


    activity.actionBar?.title = "Example 1"
    countBtn.setOnClickListener(this)
    toastBtn.setOnClickListener(this)
    randomBtn.setOnClickListener(this)

}

MainActivity.kt代码如下

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)


    setSupportActionBar(toolbar)
    val actionBar = supportActionBar
    actionBar?.title = getString(R.string.toolbar_title)
}

您似乎正在设置支持操作栏,所以您也必须在 onCreateView 方法中使用支持操作栏。 actionBar 为空,这就是为什么设置标题的代码不会 运行。

试试这个:

override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
  super.onViewCreated(view, savedInstanceState)

  (activity as AppCompatActivity).supportActionBar?.title = "Example 1"
  //...
}

我认为您可能 运行 遇到的另一个问题是您在 activity 的 onCreate 方法中添加了支持操作栏,但您正试图根据 this 在片段的 onViewCreated 中访问它(我还没有真正尝试过,只是看图)。如果是这种情况,那么您必须更改它。也许试试片段中的 onStart

它在 onViewCreated 方法上对我有用

override fun onViewCreated() {    
    (activity as AppCompatActivity).setSupportActionBar(toolbar_name)
    (activity as AppCompatActivity).supportActionBar?.title = getString(R.string.title)
    }

此页面很好地解释了如何设置工具栏:

https://developer.android.com/training/appbar/setting-up#kotlin

比更改工具栏上的内容:

setSupportActionBar(findViewById(R.id.my_toolbar))
supportActionBar!!.title = "new title of toolbar"

尝试:

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    super.onCreateOptionsMenu(menu, inflater)
    inflater.inflate(R.menu.options_menu, menu)

    (activity as AppCompatActivity).supportActionBar?.title = "My Fragment Title"

}