首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >利用androidx在片段中获取actionBar

利用androidx在片段中获取actionBar
EN

Stack Overflow用户
提问于 2019-02-26 19:50:49
回答 3查看 6.3K关注 0票数 2

我只想在一个带有函数的片段中获得actionBar,并使用Kotlin语言和AndroidX。

这是我的密码:

代码语言:javascript
运行
复制
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是意料之中的。

有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-26 20:38:31

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

另一方面,actionBar属性FragmentActivity将为您提供与遗留android.support.v7.app.ActionBar或其AndroidX等效androidx.appcompat.app.ActionBar不兼容的android.app.ActionBar

由于FragmentActivity没有supportActionBar属性,所以必须将FragmentActivity转换为androidx.appcompat.app.AppCompatActivity

代码语言:javascript
运行
复制
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

票数 3
EN

Stack Overflow用户

发布于 2019-02-26 20:03:36

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

翻译的错误意味着,在该函数中,您希望返回一个对象androidx.appcompat.action.ActionBar,但activity.actionBar是一个android.app.ActionBar!。您必须考虑到这一点,并在相应的样式中修改它。

我希望你发现它有用。

票数 0
EN

Stack Overflow用户

发布于 2020-01-09 09:31:25

首先,确保导入androidx 导入

初始私有ActionBar actionBar;

然后将其添加到受保护的空onCreate值中。

代码语言:javascript
运行
复制
    actionBar = getSupportActionBar();
    actionBar.setTitle("Your Tittle");

就这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54893039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档