I've read this for my problem and tried to rectify it. But the error of NullPointerException
is not going.
The variable dataa
is what I'm getting from previous activity and variable dataa_OLD
is what I'm retrieving from the TinyDB
. I've referred this answer on SO for storing HashMap
data-list into Sharedpreferences.
...
List<Map<String, String>> dataa= new ArrayList<>();
List<Map<String, String>> dataa_OLD= new ArrayList<>();
Map<String, String> mapp = new HashMap<String, String>();
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
//Retrieving HashMap-lists from TinyDB
Gson gson = new Gson();
String mapListString= tinyDB.getString("DATA");
String mapListStringOLD= tinyDB.getString("DATA_OLD");
Type type = new TypeToken<ArrayList<Map<String,String>>>() {}.getType();
dataa = gson.fromJson(mapListString,type);
dataa_OLD = gson.fromJson(mapListStringOLD,type);
if(dataa.size()!=0) {
for (Map<String, String> map : dataa) {
parked_addrs.add(map.get("ADDRS"));//adding address part in another list
}
tinyDB.putListString("paddrslist", parked_addrs);
if(dataa_OLD!=null) {
for (Map<String, String> map : dataa) { //adding new-list in old-list one by one
mapp.put("ADDRS", map.get("ADDRS"));
mapp.put("DATE", map.get("DATE"));
dataa_OLD.add(mapp);
}
}
else {
mapp.put("ADDRS","");
mapp.put("DATE","");
dataa_OLD.add(0,mapp);
dataa_OLD.addAll(dataa); // Line on which getting the error
}
}
The stack-trace
FATAL EXCEPTION: main Process: com.example.acer.mylocationmap, PID: 30082 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.acer.mylocationmap/com.example.acer.mylocationmap.DisplayStorageActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void java.util.List.add(int, java.lang.Object)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3190) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300) at android.app.ActivityThread.access$1000(ActivityThread.java:211) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6946) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void java.util.List.add(int, java.lang.Object)' on a null object reference at com.example.acer.mylocationmap.DisplayStorageActivity.onCreate(DisplayStorageActivity.java:115) at android.app.Activity.performCreate(Activity.java:6575) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3143) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300) at android.app.ActivityThread.access$1000(ActivityThread.java:211) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6946) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Is there anything that I'm missing? Please help me out.