我只想在一个带有函数的片段中获得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是意料之中的。
有什么帮助吗?
发布于 2019-02-26 12: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
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
发布于 2019-02-26 12:03:36
可能在您的XML视图中,您正在定义一个不是actionBar的AndroidX。
翻译的错误意味着,在该函数中,您希望返回一个对象androidx.appcompat.action.ActionBar
,但activity.actionBar
是一个android.app.ActionBar!
。您必须考虑到这一点,并在相应的样式中修改它。
我希望你发现它有用。
发布于 2020-01-09 01:31:25
首先,确保导入androidx 导入
初始私有ActionBar actionBar;
然后将其添加到受保护的空onCreate值中。
actionBar = getSupportActionBar();
actionBar.setTitle("Your Tittle");
就这样。
https://stackoverflow.com/questions/54893039
复制相似问题