【发布时间】:2019-10-09 09:15:52
【问题描述】:
我想在我的 Android 应用程序中使用 Material Design 组件。该应用已使用 androidx 向后兼容以前版本的 Android,使用 SDK 28 编译。
我的应用程序中的所有活动都扩展自 BaseActivity 类,而后者又扩展了 androidx.fragment.app.FragmentActivity(例如,我在屏幕上有一个相机片段)。
但是,当我将应用程序的主题更改为 Material Design 主题时,例如
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar" />
然后 MenuInflater 不再工作:
getMenuInflater().inflate(R.menu.activity_options, menu);
我在尝试加载操作栏时收到 NullPointerException(getActionBar() 返回null):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
...
}
我在网上其他地方看到有人使用AppCompatActivity.getSupportActionBar() 的例子,但这对我没有用,因为androidx.fragment.app.FragmentActivity 没有扩展AppCompatActivity。
有没有一种方法可以在不需要重新架构整个应用程序的情况下正确实现 Material Design?
提取应用的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"
}
【问题讨论】:
标签: android android-actionbar android-support-library android-appcompat androidx