The code here is to update user data when logged into my app. A problem is that when im setting the userData the program throws a null pointer error even though my Log says that the object exists?
JsonObjectRequest userDataRequest = new JsonObjectRequest(Request.Method.GET, dataUrl, null, new Response.Listener < JSONObject > () {
@Override
public void onResponse(JSONObject response) {
Log.i("Success", String.valueOf(response));
// Set the user data in the live model when logging in
try {
userViewModel.setUserData(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
This is the setUserData code and error
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