【发布时间】:2017-12-03 21:24:52
【问题描述】:
我已经阅读了this 的问题并试图纠正它。但是NullPointerException 的错误不会发生。
变量dataa 是我从以前的活动中得到的,变量dataa_OLD 是我从TinyDB 中检索的。我已经提到 this answer on SO 将 HashMap 数据列表存储到 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
}
}
stack-trace
致命异常:主要 进程:com.example.acer.mylocationmap,PID:30082 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.acer.mylocationmap/com.example.acer.mylocationmap.DisplayStorageActivity}:java.lang.NullPointerException:尝试调用接口方法'void java.util.List。在空对象引用上添加(int,java.lang.Object)' 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3190) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300) 在 android.app.ActivityThread.access$1000(ActivityThread.java:211) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:6946) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 原因:java.lang.NullPointerException:尝试在空对象引用上调用接口方法“void java.util.List.add(int, java.lang.Object)” 在 com.example.acer.mylocationmap.DisplayStorageActivity.onCreate(DisplayStorageActivity.java:115) 在 android.app.Activity.performCreate(Activity.java:6575) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3143) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300) 在 android.app.ActivityThread.access$1000(ActivityThread.java:211) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:6946) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
我有什么遗漏的吗?请帮帮我。
【问题讨论】:
-
能否提供您的
NullPointerException的stack-trace? -
在哪一行抛出异常?如果您在问题中发布完整的错误文本会有所帮助。
-
@Izruo 添加了堆栈跟踪
-
@Keara 是的,在编辑中添加为评论。
标签: java android nullpointerexception hashmap