使用androidx获取片段内部的actionBar

使用androidx获取片段内部的actionBar,android,android-fragments,kotlin,android-actionbar,androidx,Android,Android Fragments,Kotlin,Android Actionbar,Androidx,我只想用一个函数将actionBar放在一个片段中,我正在使用Kotlin语言和AndroidX 这是我的代码: import androidx.appcompat.app.ActionBar import androidx.fragment.app.Fragment class TestFragment : Fragment() { fun getActiobar() : ActionBar { return activity.actionBar

我只想用一个函数将actionBar放在一个片段中,我正在使用Kotlin语言和AndroidX

这是我的代码:

import androidx.appcompat.app.ActionBar
import androidx.fragment.app.Fragment

class TestFragment : Fragment() {

    fun getActiobar() : ActionBar
    {
        return  activity.actionBar
    }
}
但我得到了这个错误:

类型不匹配:推断类型为android.app.ActionBar!但androidx.appcompat.app.ActionBar是预期的


有什么帮助吗?

在XML视图中,您可能正在定义一个不是AndroidX的actionBar

翻译后的错误表示,在该函数中,您希望返回一个对象
androidx.appcompat.action.ActionBar
,但
activity.ActionBar
是一个
android.app.ActionBar。您必须考虑到这一点,并在相应的样式中对其进行修改


我希望您会发现它很有用。

androidx.fragment.app.fragment的
activity
属性为您提供了
androidx.fragment.app.FragmentActivity
“此片段当前与相关”(引用自Android Studio中提供的文档)

另一方面,
FragmentActivity
actionBar
属性将为您提供一个
android.app.actionBar
,该属性与旧版
android.support.v7.app.actionBar
或其AndroidX等价物
AndroidX.appcompat.app.actionBar
不兼容

由于
FragmentActivity
没有
supportActionBar
属性,因此必须将
FragmentActivity
强制转换为
androidx.appcompat.app.AppCompatActivity

import androidx.appcompat.app.ActionBar
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment

class TestFragment: Fragment() {

    fun getActionbar() : ActionBar?
    {
        return (activity as AppCompatActivity).supportActionBar
    }
}

注意:我添加了“?”,因为
supportActionBar
可能是
null

首先确保导入androidx 导入androidx.appcompat.app.ActionBar

初始私有ActionBar ActionBar

然后在创建计算时将其添加到受保护的void中

    actionBar = getSupportActionBar();
    actionBar.setTitle("Your Tittle");
就这些