Api版本22中actionBar.setDisplayShowTitleEnabled(boolean)的NullPointerException

时间:2015-08-13 06:23:59

标签: android android-studio android-actionbar

我在我的应用程序中使用Actionbar,它在api 22下工作正常。

使用android.support.v4.app.FragmentActivity

使用下面的操作栏代码

public void initActionBar() {
           actionBar = getActionBar();
           actionBar.setDisplayShowTitleEnabled(true);
           actionBar.setDisplayHomeAsUpEnabled(false);
           actionBar.setDisplayUseLogoEnabled(false);
           actionBar.setHomeButtonEnabled(true);
           actionBar.setTitle("Rides");
           actionBar.setIcon(R.drawable.menu);
           actionBar.setBackgroundDrawable(newColorDrawable(getResources().getColor(R.color.orange)));
           actionBar.setDisplayShowCustomEnabled(true);
}

style.xml中的App主题

<!-- Application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light">
    <item name="android:activatedBackgroundIndicator">@drawable/list_activated_background</item>
    <item name="android:typeface">serif</item>
    <item name="android:actionBarSize">55dip</item>
</style>

运行时相同在版本22中获取以下错误

LogCat错误

引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.app.ActionBar.setDisplayShowTitleEnabled(boolean)'             在com.holachef.android.chef_android.activity.HomeActivity.initActionBar(HomeActivity.java:160)             在com.holachef.android.chef_android.activity.HomeActivity.onCreate(HomeActivity.java:62)             在android.app.Activity.performCreate(Activity.java:5953)             在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)             在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)             在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)             在android.app.ActivityThread.access $ 800(ActivityThread.java:148)             在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1292)             在android.os.Handler.dispatchMessage(Handler.java:102)             在android.os.Looper.loop(Looper.java:135)

使用android studio这个,eclips中的相同代码在22版上成功运行,是与android studio有关的问题。

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:1)

您必须扩展AppCompatActivity而不是FragmentActivity才能使Actionbar包含片段。

如果您正在使用v7 appcompat库,那么您的活动应该扩展 AppCompatActivity ,这是FragmentActivity的子类(有关更多信息,请参阅添加操作栏)。

你仍然可以试试这个,

ActionBar actionBar = getSupportActionBar();

您可以在此处找到更多细节。 http://developer.android.com/training/basics/fragments/creating.html

请切换到Material Theme,而不是使用旧的Holo Theme。

答案 1 :(得分:0)

对于Android Studio,支持库现在都由Gradle处理。所以转到这个文件:

enter image description here

现在注意我用红色突出显示的部分。尝试用“minSdkVersion”玩游戏并重建gradle。 enter image description here