我刚开始使用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。谁能告诉我为什么?
答案 0 :(得分:1)
您没有向我们提供有关您的db对象的任何信息(我想代表您的数据库。
因为你说它在数据库插入时崩溃了我不得不猜测db在你做插入时没有初始化。 我会建议 1)添加if(db!= null)
如果崩溃日志中的最后一行实际上是在db.insert上。
如果有更多行,请将您的论坛添加到帖子中,以便我们提供帮助
答案 1 :(得分:1)
在这种情况下,只有一件事可以为null:db
。你确定要初始化它们吗?