【问题标题】:How to Change ActionBar title in fragment class in kotlin?如何在 kotlin 的片段类中更改 ActionBar 标题?
【发布时间】:2018-11-11 06:44:42
【问题描述】:

我是 kotlin 的 android 开发新手。我尝试使用以下代码从我的片段中更改操作栏标题。它不起作用。请帮助

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)
}

【问题讨论】:

    标签: android android-fragments kotlin android-actionbar


    【解决方案1】:

    您似乎正在设置支持操作栏,因此您也必须在 onCreateView 方法中使用支持操作栏。 actionBar 为空,这就是设置标题的代码无法运行的原因。

    试试这个:

    override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
      super.onViewCreated(view, savedInstanceState)
    
      (activity as AppCompatActivity).supportActionBar?.title = "Example 1"
      //...
    }
    

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

    【讨论】:

    • Activity没有getSuppotActionBar函数,所以需要转换成AppCompatActivity。
    • 我将代码移到 onStart 方法,并将 actionBar 更改为 supportActionBar。但随后 supportActionBar 成为未解决的参考
    • 哦,抱歉,我忘了说您也需要将活动转换为支持活动(我想您可以这样做,因为您使用了支持操作栏)。我已经更新了答案。我假设你扩展 AppCompatActivity
    • 在 kotlin 语言中使用 this.supportActionBar?.title = "Example 1"。
    【解决方案2】:

    它在 onViewCreated 方法上对我有用

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

    【讨论】:

      【解决方案3】:

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

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

      比改变工具栏上的东西:

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

      【讨论】:

        【解决方案4】:

        试试:

        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"
        
        }
        

        【讨论】:

        • 在标题语句的顶部使用 setSupportActionBar(true)。
        猜你喜欢
        • 1970-01-01
        • 2020-10-04
        • 2019-02-18
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多