为什么我的Android应用程序会在Row插入时崩溃?

时间:2010-11-22 03:39:54

标签: java android nullpointerexception

我刚开始使用android开发,我遇到了一些问题,我的教科书没有帮助我。

这是我的插入功能:     public long insertEntry(BudgetsItem item){         断言item.id == -1;

    ContentValues newBudgetValues = new ContentValues();
    newBudgetValues.put("name", item.name);
    newBudgetValues.put("balance", item.balance);

    item.id = db.insert(DATABASE_TABLE_NAME, null, newBudgetValues);

    return item.id;
}

这是我的表定义:

private static final String TABLE_CREATE = "CREATE " + DATABASE_TABLE_NAME + "(\n" +
    "id INTEGER PRIMARY KEY AUTOINCREMENT, \n" +
    "name TEXT, \n" +
    "balance DOUBLE);";

这就是在崩溃之前调用适配器的原因:

        BudgetsAdapter adapter = new BudgetsAdapter(getBaseContext());
        BudgetsItem newBudget = new BudgetsItem(budgetName, balance);
        if(adapter.insertEntry(newBudget) != -1){
            Toast.makeText(getApplicationContext(), "Budget Created!", Toast.LENGTH_SHORT);
            finish();
        }else{
            Toast.makeText(getApplicationContext(), "Oops, something failed.", Toast.LENGTH_SHORT);
        }

它在db.insert行上崩溃并出现NullPointerException。谁能告诉我为什么?

2 个答案:

答案 0 :(得分:1)

您没有向我们提供有关您的db对象的任何信息(我想代表您的数据库。

因为你说它在数据库插入时崩溃了我不得不猜测db在你做插入时没有初始化。 我会建议 1)添加if(db!= null)

如果崩溃日志中的最后一行实际上是在db.insert上。

如果有更多行,请将您的论坛添加到帖子中,以便我们提供帮助

答案 1 :(得分:1)

在这种情况下,只有一件事可以为null:db。你确定要初始化它们吗?