Android ActionBar发出不同的API< > 21

时间:2016-03-20 13:39:24

标签: java android android-actionbar android-appcompat android-actionbaractivity

基于不同的API遇到ActionBar NullPointerException问题。我的所有活动都延伸Activity

这是我的代码:

摇篮

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">

样式(values-v21):

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

的活动:

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

它可以在 API23 上正常工作,但在较低的位置提供NullPointerException

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

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

2 个答案:

答案 0 :(得分:1)

你应该:

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

答案 1 :(得分:0)

尝试扩展AppCompatActivity并使用getSupportActionBar()