使用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.ActionBar
但 activity.actionBar
是一个 android.app.ActionBar!
。您必须考虑到这一点并以相应的样式对其进行修改。
希望你觉得有用。
androidx.fragment.app.Fragment
的 activity
属性 为您提供 androidx.fragment.app.FragmentActivity
"this fragment is currently associated with"(引自 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;
初始private ActionBar actionBar;
然后在 protected void onCreate calss 中添加这个
actionBar = getSupportActionBar();
actionBar.setTitle("Your Tittle");
就这些了。
我只想在具有功能的片段中获取 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.ActionBar
但 activity.actionBar
是一个 android.app.ActionBar!
。您必须考虑到这一点并以相应的样式对其进行修改。
希望你觉得有用。
androidx.fragment.app.Fragment
的 activity
属性 为您提供 androidx.fragment.app.FragmentActivity
"this fragment is currently associated with"(引自 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;
初始private ActionBar actionBar;
然后在 protected void onCreate calss 中添加这个
actionBar = getSupportActionBar();
actionBar.setTitle("Your Tittle");
就这些了。