【问题标题】:get actionBar inside fragment using androidx使用androidx获取片段内的actionBar
【发布时间】:2019-07-20 10:35:07
【问题描述】:

我只想在一个带有函数的片段中获取 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 是预期的。

有什么帮助吗?

【问题讨论】:

    标签: android android-fragments kotlin android-actionbar androidx


    【解决方案1】:

    androidx.fragment.app.Fragmentactivity 属性为您提供 androidx.fragment.app.FragmentActivity“此片段当前关联”(引用自 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

    【讨论】:

      【解决方案2】:

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

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

      希望对你有用。

      【讨论】:

        【解决方案3】:

        首先确保你导入了 androidx 导入 androidx.appcompat.app.ActionBar;

        初始私有ActionBar actionBar;

        然后将其添加到受保护的 void onCreate calss 中

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

        就是这样。

        【讨论】:

          猜你喜欢
          • 2014-07-28
          • 2016-03-12
          • 1970-01-01
          • 2023-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-16
          • 1970-01-01
          相关资源
          最近更新 更多