将SupportActionBar与androidx FragmentActivity一起使用

将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

我想在我的Android应用程序中使用材质设计组件。该应用程序已经使用androidx与以前版本的Android向后兼容,并使用SDK 28编译

我的应用程序中的所有活动都是从
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
弃用。