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

标签 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 中的应用主题

<!-- 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 相关的问题。

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

最佳答案

您必须扩展 AppCompatActivity 而不是 FragmentActivity 才能拥有带 fragment 的 Actionbar。

如果您使用的是 v7 appcompat 库,您的 Activity 应该扩展 AppCompatActivity,它是 FragmentActivity 的子类(有关详细信息,请阅读添加操作栏)。

你还是可以试试这个,

ActionBar actionBar = getSupportActionBar();

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

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

关于android - Api 版本 22 中 actionBar.setDisplayShowTitleEnabled(boolean) 上的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31980887/

相关文章:

android - 优化 NEON 装配功能

android - QMOBILE、TECNO、ALPS java.lang.NoClassDefFoundError : android. support.v7.internal.view.menu.MenuBuilder

xml - 创建一个不使用androidx的新项目

java - 从另一个 fragment 访问 Actionbar TextView

android - 快图如何做一个半透明的actionbar?

android - 添加 key 限制后无法登录 Firebase

java - 如何从Json对象中获取数据?

java - 在 Android 谷歌地图中绘制 4K 多段线

Android Studio 模拟器卡在任务栏中最小化

ANDROID STUDIO 3.0 升级: Error:Could not resolve all files for configuration ':app:xxxxxxxDebugCompileClasspath'