使用androidx获取片段内的actionBar

get actionBar inside fragment using androidx

我只想在具有功能的片段中获取 actionBar,并且我使用的是 Kotlin 语言和 AndroidX。

这是我的代码:

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

class TestFragment : Fragment() {

    fun getActiobar() : ActionBar
    {
        return  activity.actionBar
    }
}

但我收到此错误:

Type mismatch: inferred type is android.app.ActionBar! but androidx.appcompat.app.ActionBar was expected.

有什么帮助吗?

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

翻译的错误意味着在那个函数中你想要 return 一个对象 androidx.appcompat.action.ActionBaractivity.actionBar 是一个 android.app.ActionBar! 。您必须考虑到这一点并以相应的样式对其进行修改。

希望你觉得有用。

androidx.fragment.app.Fragmentactivity 属性 为您提供 androidx.fragment.app.FragmentActivity "this fragment is currently associated with"(引自 Android Studio 中可用的文档)

另一方面,FragmentActivityactionBar 属性 会给你一个 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;

初始private ActionBar actionBar;

然后在 protected void onCreate calss 中添加这个

    actionBar = getSupportActionBar();
    actionBar.setTitle("Your Tittle");

就这些了。