使用androidx获取片段内部的actionBar
我只想用一个函数将actionBar放在一个片段中,我正在使用Kotlin语言和AndroidX 这是我的代码:使用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
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");
就这些