Android HashMap提取不同的对象

时间:2015-02-20 03:02:37

标签: java android object hashmap

我有一个接受HashMap插入数据库的方法(如下)。 HashMap中的对象是字符串,整数和双精度的混合。如果他们都作为字符串进入数据库,我真的不在乎,因为工作已经完成了。

以下代码不起作用。一旦遇到第一个int,我就会得到一个NullPointerException。我给出所有空的int并将值加0,因此它们不是null,但是当它遇到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$1.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有混淆吗?

2 个答案:

答案 0 :(得分:1)

“一旦遇到第一个int,我就会得到一个NullPointerException”看起来你试图在HashMap中插入int基本类型。在将它们插入HashMap之前,您应该将它们转换为Integer或String对象。简而言之,错误在于其他地方。

答案 1 :(得分:1)

抱歉,伙计们,这是我的错。你是对的,错误来自其他地方。我错误地初始化了我的变量。

你不能这样做:

int one, two, three = 0;

你必须说:

int one = 0, two = 0, three = 0;

除了末尾的变量(这是唯一被赋值的变量)之外,所有东西都返回null。

再次感谢您的帮助和快速回复。