Android ActionBar 问题不同 API < > 21

Android ActionBar issue different API < > 21

基于不同 API 的 ActionBar NullPointerException 有问题。我所有的活动都扩展 Activity .

这是我的代码:

Gradle

minSdkVersion 17
targetSdkVersion 23    

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:design:23.1.1'

样式:

<style name="AppTheme" parent="Theme.AppCompat.Light">

样式(值-v21):

<style name="AppTheme" parent="android:Theme.Material.Light">

Activity:

ActionBar actionBar = getActionBar();
assert actionBar != null;
actionBar.hide();

它在 API23 上工作正常,但在较低的 NullPointerException 上工作。

阅读其他类似问题,尝试使用 ActionBarActivity(已弃用)、AppCompatActivitySupportActionBar,但我无法让它在不同的 API 上工作。

有什么建议吗?任何帮助将非常感激。提前致谢。

尝试扩展 AppCompatActivity 并使用 getSupportActionBar()

你应该:

  • 使用AppCompatActivity
  • 使用getSupportActionBar()代替getActionBar()
  • 对所有设备使用相同的主题 Theme.AppCompat.Light(删除 v21 中的 material 主题)