java.lang.NullPointerException(尝试第三次尝试后仍然给出相同的错误)

时间:2015-12-23 07:47:13

标签: android android-studio

我是android开发的新手。我目前正在开发面部识别的Android应用程序。我正在尝试运行从github获取的现有源代码。代码似乎没有任何错误(代码下面的红线)。当我试图运行时,应用程序已停止工作并给了我一个java.lang.NullPointerException错误。

Caused by: java.lang.NullPointerException
           at java.util.Objects.requireNonNull(Objects.java:98)
           at com.example.syafiq.testing.FdActivity.onCreate(FdActivity.java:179)

突出显示的错误(FdActivity.java:179)

(line 178) ActionBar actionBar = getActionBar();
(line 179) actionBar.setDisplayHomeAsUpEnabled(true);

我尝试过在互联网上找到的解决方案

首先尝试:

ActionBar actionBar = getActionBar();
assert actionBar != null;
actionBar.setDisplayHomeAsUpEnabled(true);

然而仍然是同样的错误,所以我尝试了另一个我在互联网上找到的错误。

第二次尝试:

ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

结果仍然相同 我试过了第三个

第三次尝试:

ActionBar actionBar = getActionBar();
Objects.requireNonNull(actionBar).setDisplayHomeAsUpEnabled(true);

我尝试的所有三个解决方案仍然给出相同的错误,指向第179行

对于android manifest.xml(从github上的源代码获取):

android:theme="@android:style/Theme.Holo"

但源代码在values文件夹下没有style.xml文件。但是我的android studio包含了style.xml文件,代码是:

<style name="Theme.Holo" parent="Theme.AppCompat.Light.DarkActionBar">

我没有使用导入工具而是手动创建(.java,.xml和其他包含的库)

4 个答案:

答案 0 :(得分:2)

如果您的项目构建目标相同或低于Android 4.4问题可能属于您的活动主题,请检查清单,如果您使用自定义主题尝试使用android:theme="@android:style/Theme.Holo.Light"作为父级

如果项目构建目标等于或高于Android 5.0使用:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

而不是

actionBar.setDisplayHomeAsUpEnabled(true);

并检查主题问题如上

答案 1 :(得分:2)

您的logcat抛出

  

引起:java.lang.NullPointerException at   java.util.Objects.requireNonNull(Objects.java:98)

  1. 尝试使用getSupportActionBar()

  2. 使用工具栏代替ActionBar

  3. 自版本 22.1.0 以来,不推荐使用类ActionBarActivity。您应该使用AppCompatActivity

    https://developer.android.com/reference/android/support/v7/app/AppCompatActivity.html

答案 2 :(得分:1)

如果没有发布您的xml文件和清单,很难猜到。请发布它们,我们可以帮助您。同样在你的清单中,确保你有一个这样的主题

android:theme="@style/Theme.ActionBar"

你可以因为很多原因而遇到npe。

答案 3 :(得分:0)

AndroidManifest.xml或您的代码中检查此活动主题是否类似于noactionbar,如果是,那么您的活动中的getActionBar()将为null;