Android HashMap提取不同的对象
Android HashMap Extract Different Objects
我有一个方法(如下)接受一个 HashMap 插入到数据库中。 HashMap 中的对象是字符串、整数和双精度数的混合体。我真的不在乎它们是否都作为字符串进入数据库,因为工作已经完成了。
下面的代码是行不通的。一遇到第一个 int,我就得到一个 NullPointerException。我给所有空整数和双精度值 0,因此它们不为空,但是当它遇到 System.out.println 方法时,它会抛出异常。我可能在这里遗漏了一些东西,你的帮助会很棒。
public void insertQueTicket (HashMap<String, Object> queryValues) {
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
for (Map.Entry<String, Object> entry : queryValues.entrySet()) {
String column = entry.getKey();
Object value = entry.getValue().toString();
//contentValues.put(column, value);
System.out.println(value);
}
//db.insert(QUETICKETS_TABLE_NAME, null, contentValues);
db.close();
}
Logcat:
02-19 21:40:12.409 3411-3411/com.crudeoms.scalehauling.coms I/System.out﹕ 0.0
02-19 21:40:12.409 3411-3411/com.crudeoms.scalehauling.coms D/AndroidRuntime﹕ Shutting down VM
02-19 21:40:12.419 3411-3411/com.crudeoms.scalehauling.coms W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb2d85b20)
02-19 21:40:12.429 3411-3411/com.crudeoms.scalehauling.coms D/dalvikvm﹕ GC_FOR_ALLOC freed 235K, 8% free 3646K/3940K, paused 4ms, total 9ms
02-19 21:40:12.429 3411-3411/com.crudeoms.scalehauling.coms E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.crudeoms.scalehauling.coms, PID: 3411
java.lang.NullPointerException
at com.crudeoms.scalehauling.coms.DBController.insertQueTicket(DBController.java:214)
at com.crudeoms.scalehauling.coms.Activity_Main.SubmitTicketData(Activity_Main.java:105)
at com.crudeoms.scalehauling.coms.Fragment_Ticket.onClick(Fragment_Ticket.java:198)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
我认为这就是我转换 int、double 等项目的方式。queryValues Hashmap 中的每个行项目都是 ,如果这样的话。每个变量之前都已从 EditText 字段转换为 int、double 或 String。
我想我可能对 int 与 Integer 以及 double 与 Double 感到困惑?
"I get a NullPointerException as soon as it hits the first int" 您似乎试图在 HashMap 中插入 int 基本类型。在将它们插入 HashMap 之前,您应该将它们转换为 Integer 或 String 对象。简而言之,错误在别处。
对不起各位,是我的错。你是对的,错误来自其他地方。我错误地初始化了我的变量。
你不能这样做:
int one, two, three = 0;
你不得不说:
int one = 0, two = 0, three = 0;
除了最后的变量是唯一被分配的变量外,一切都返回 null。
再次感谢您的帮助和快速回复。
我有一个方法(如下)接受一个 HashMap 插入到数据库中。 HashMap 中的对象是字符串、整数和双精度数的混合体。我真的不在乎它们是否都作为字符串进入数据库,因为工作已经完成了。
下面的代码是行不通的。一遇到第一个 int,我就得到一个 NullPointerException。我给所有空整数和双精度值 0,因此它们不为空,但是当它遇到 System.out.println 方法时,它会抛出异常。我可能在这里遗漏了一些东西,你的帮助会很棒。
public void insertQueTicket (HashMap<String, Object> queryValues) {
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
for (Map.Entry<String, Object> entry : queryValues.entrySet()) {
String column = entry.getKey();
Object value = entry.getValue().toString();
//contentValues.put(column, value);
System.out.println(value);
}
//db.insert(QUETICKETS_TABLE_NAME, null, contentValues);
db.close();
}
Logcat:
02-19 21:40:12.409 3411-3411/com.crudeoms.scalehauling.coms I/System.out﹕ 0.0
02-19 21:40:12.409 3411-3411/com.crudeoms.scalehauling.coms D/AndroidRuntime﹕ Shutting down VM
02-19 21:40:12.419 3411-3411/com.crudeoms.scalehauling.coms W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb2d85b20)
02-19 21:40:12.429 3411-3411/com.crudeoms.scalehauling.coms D/dalvikvm﹕ GC_FOR_ALLOC freed 235K, 8% free 3646K/3940K, paused 4ms, total 9ms
02-19 21:40:12.429 3411-3411/com.crudeoms.scalehauling.coms E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.crudeoms.scalehauling.coms, PID: 3411
java.lang.NullPointerException
at com.crudeoms.scalehauling.coms.DBController.insertQueTicket(DBController.java:214)
at com.crudeoms.scalehauling.coms.Activity_Main.SubmitTicketData(Activity_Main.java:105)
at com.crudeoms.scalehauling.coms.Fragment_Ticket.onClick(Fragment_Ticket.java:198)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
我认为这就是我转换 int、double 等项目的方式。queryValues Hashmap 中的每个行项目都是 ,如果这样的话。每个变量之前都已从 EditText 字段转换为 int、double 或 String。
我想我可能对 int 与 Integer 以及 double 与 Double 感到困惑?
"I get a NullPointerException as soon as it hits the first int" 您似乎试图在 HashMap 中插入 int 基本类型。在将它们插入 HashMap 之前,您应该将它们转换为 Integer 或 String 对象。简而言之,错误在别处。
对不起各位,是我的错。你是对的,错误来自其他地方。我错误地初始化了我的变量。
你不能这样做:
int one, two, three = 0;
你不得不说:
int one = 0, two = 0, three = 0;
除了最后的变量是唯一被分配的变量外,一切都返回 null。
再次感谢您的帮助和快速回复。