我是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和其他包含的库)
答案 0 :(得分:2)
如果您的项目构建目标相同或低于Android 4.4问题可能属于您的活动主题,请检查清单,如果您使用自定义主题尝试使用android:theme="@android:style/Theme.Holo.Light"
作为父级
如果项目构建目标等于或高于Android 5.0使用:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
而不是
actionBar.setDisplayHomeAsUpEnabled(true);
并检查主题问题如上
答案 1 :(得分:2)
引起:java.lang.NullPointerException at java.util.Objects.requireNonNull(Objects.java:98)
尝试使用getSupportActionBar()
使用工具栏代替ActionBar
。
自版本 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
;