Java Android截击nullpointerexception(非空时)

Java Android截击nullpointerexception(非空时),java,android,json,Java,Android,Json,这里的代码是在登录到我的应用程序时更新用户数据。一个问题是,当im设置userData时,程序抛出一个空指针错误,即使我的日志说对象存在 JsonObjectRequest userDataRequest=newjsonobjectrequest(Request.Method.GET,dataUrl,null,new Response.Listener(){ @凌驾 公共void onResponse(JSONObject响应){ Log.i(“成功”,String.valueOf(响应));

这里的代码是在登录到我的应用程序时更新用户数据。一个问题是,当im设置userData时,程序抛出一个空指针错误,即使我的日志说对象存在

JsonObjectRequest userDataRequest=newjsonobjectrequest(Request.Method.GET,dataUrl,null,new Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
Log.i(“成功”,String.valueOf(响应));
//登录时在live模型中设置用户数据
试一试{
setUserData(响应);
}捕获(JSONException e){
e、 printStackTrace();
}
}
}
这是setUserData代码和错误

public void setUserData(JSONObject userObject) throws JSONException {
        HashMap<String, String> userDataMap = new HashMap<>();
        userDataMap.put("username", userObject.get("username").toString());
        userDataMap.put("first_name", userObject.get("first_name").toString());
        userDataMap.put("last_name", userObject.get("last_name").toString());
        userDataMap.put("email", userObject.get("email").toString());
        userDataMap.put("phone", userObject.get("phone").toString());

        userLiveData.setValue(userDataMap);
    }


E/AndroidRuntime: FATAL EXCEPTION: main
    Process: se.liu.robn725.tddd80_projekt, PID: 25928
    java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.lifecycle.MutableLiveData.setValue(java.lang.Object)' on a null object reference
        at se.liu.robn725.tddd80_projekt.UserViewModel.setUserData(UserViewModel.java:42)
        at se.liu.robn725.tddd80_projekt.LoginFragment$6.onResponse(LoginFragment.java:122)
        at se.liu.robn725.tddd80_projekt.LoginFragment$6.onResponse(LoginFragment.java:116)
        at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:90)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
I/Process: Sending signal. PID: 25928 SIG: 9
public void setUserData(JSONObject userObject)抛出JSONException{
HashMap userDataMap=新HashMap();
userDataMap.put(“用户名”,userObject.get(“用户名”).toString();
userDataMap.put(“first_name”,userObject.get(“first_name”).toString();
userDataMap.put(“last_name”,userObject.get(“last_name”).toString();
userDataMap.put(“email”,userObject.get(“email”).toString());
userDataMap.put(“phone”,userObject.get(“phone”).toString();
userLiveData.setValue(userDataMap);
}
E/AndroidRuntime:致命异常:主
流程:se.liu.robn725.tddd80_项目,PID:25928
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void androidx.lifecycle.MutableLiveData.setValue(java.lang.Object)”
位于se.liu.robn725.tddd80_projekt.UserViewModel.setUserData(UserViewModel.java:42)
在se.liu.robn725.tddd80_projekt.LoginFragment$6.onResponse(LoginFragment.java:122)
在se.liu.robn725.tddd80_projekt.LoginFragment$6.onResponse(LoginFragment.java:116)
位于com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:90)
位于com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
位于android.os.Handler.handleCallback(Handler.java:883)
位于android.os.Handler.dispatchMessage(Handler.java:100)
位于android.os.Looper.loop(Looper.java:214)
位于android.app.ActivityThread.main(ActivityThread.java:7356)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
I/进程:发送信号。PID:25928 SIG:9

请发布完整的stacktrace,我的猜测是
userViewModel
为空,确定它的最佳位置是stacktrace。如果没有堆栈跟踪,调试崩溃是非常困难的。请参阅以获取Android特定的建议,以及获得堆栈跟踪后如何操作的建议。如果您仍然需要帮助,请将问题编辑为包括完整的堆栈跟踪,以及堆栈跟踪指向代码的哪一行。我在postAs中添加了更多信息,您可以从这一行
尝试调用虚拟方法void androidx.lifecycle.MutableLiveData.setValue(java.lang.Object)'在空对象引用上
变量
userLiveData
为空。是否在viewmodel中初始化它?
userLiveData
为空。