将SupportActionBar与androidx FragmentActivity一起使用
我想在我的Android应用程序中使用材质设计组件。该应用程序已经使用androidx与以前版本的Android向后兼容,并使用SDK 28编译 我的应用程序中的所有活动都是从将SupportActionBar与androidx FragmentActivity一起使用,android,android-actionbar,android-support-library,android-appcompat,androidx,Android,Android Actionbar,Android Support Library,Android Appcompat,Androidx,我想在我的Android应用程序中使用材质设计组件。该应用程序已经使用androidx与以前版本的Android向后兼容,并使用SDK 28编译 我的应用程序中的所有活动都是从BaseActivity类扩展而来的,该类反过来又扩展了androidx.fragment.app.FragmentActivity(例如,我在屏幕上有一个摄像头片段) 但是,当我将应用程序的主题更改为材质设计主题时,例如 然后菜单平坦器不再工作: getMenuInflater().充气(R.menu.activit
BaseActivity
类扩展而来的,该类反过来又扩展了androidx.fragment.app.FragmentActivity
(例如,我在屏幕上有一个摄像头片段)
但是,当我将应用程序的主题更改为材质设计主题时,例如
然后菜单平坦器不再工作:
getMenuInflater().充气(R.menu.activity\u选项,菜单);
在尝试加载操作栏时,我得到一个NullPointerException(getActionBar()
返回null
):
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
...
}
我在网上的其他地方看到过使用AppCompatActivity.getSupportActionBar()
的人的例子,但这对我没有用处,因为androidx.fragment.app.FragmentActivity
没有扩展AppCompatActivity
是否有一种方法可以在不需要重新构建整个应用程序的情况下正确实施材料设计
提取应用程序的build.gradle
:
android {
buildToolsVersion "29.0.0"
compileSdkVersion 28
defaultConfig {
minSdkVersion 19
targetSdkVersion 23
}
}
dependencies {
implementation "androidx.core:core:1.1.0"
implementation "com.google.android.material:material:1.1.0-beta01"
}
但这对我没有用处,因为androidx.fragment.app.FragmentActivity不扩展AppCompatActivity
您的BaseActivity
可以扩展AppCompatActivity
而不是FragmentActivity
,因为androidx.appcompat.app.AppCompatActivity
扩展了androidx.fragment.app.FragmentActivity
通过这种方式,您可以使用方法AppCompatActivity.getSupportActionBar()
但这对我没有用处,因为androidx.fragment.app.FragmentActivity不扩展AppCompatActivity
您的BaseActivity
可以扩展AppCompatActivity
而不是FragmentActivity
,因为androidx.appcompat.app.AppCompatActivity
扩展了androidx.fragment.app.FragmentActivity
通过这种方式,您可以使用方法
AppCompatActivity.getSupportActionBar()
谢谢!我刚才在这里看到了Android支持库的另一个问题的答案:@Fraser是的,ActionBarActivity
是支持库提供的一个旧类,多年前被AppCompatActivity
弃用。谢谢!我刚才在这里看到了Android支持库的另一个问题的答案:@Fraser是的,ActionBarActivity
是支持库提供的一个旧类,多年前被AppCompatActivity
弃用。