试图从ContentValues对象检索值时,为什么会变为空?
问题描述:
当我尝试从我传递给我的数据库方法的ContentValues对象中检索/插入值时,出现NullPointerException。我在我的数据库表中有几列,而不是将所有这些作为params传递给方法,我试图简化它一点。试图从ContentValues对象检索值时,为什么会变为空?
下面的代码示例:
public class MyActivity extends Activity {
private Calendar calendar = Calendar.getInstance();
// other methods in here....
public void onClick(View v) {
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int date = calendar.get(Calendar.DAY_OF_WEEK);
int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
ContentValues values = new ContentValues();
values.put(YEAR, year);
values.put(MONTH, month);
values.put(DATE, date);
values.put(WEEK_OF_YEAR, weekOfYear);
if(everythingIsGood) {
// the problem starts after this.
mDb.addToDatabase(values);
}
}
这里的数据库的方法:
public class Database {
// other methods....
public long addToDatabase(ContentValues values) {
// I'm getting a NullPointerException right here, trying to retrieve
// a value from this ContentValues object
int weekOfYear = values.getAsInteger(WEEK_OF_YEAR);
values.remove(WEEK_OF_YEAR);
// do other stuff
long pId = this.getParentId(weekOfYear);
// And, if I take the above out, right here
values.put(PARENT_ID, pId);
mDb.insert(table_name, null, values);
}
}
所以,不允许我操纵ContentValues对象?这是不好的做法,我应该只是通过所有这些变量的方法?
注:我知道一个事实,即值不为空。
在此先感谢。
答
看起来你不像打开数据库mDb,bro。你必须这样做。
+0
我总结了一下代码。 “//其他方法......”部分完成了这一切。问题在于操纵ContentValues对象。 – stpx88 2012-02-21 21:38:23
如果你在这一行上得到一个'NullPointerException',这意味着你的'values'对象为null。你发布的是完整的'onClick'方法吗? – Luksprog 2012-02-21 20:55:07
我发布的是一个总结。我不知道我以前做错了什么,但现在正在工作。我一直试图弄清楚几个小时。如何在'onClick'方法内访问'MyActivity'类的成员变量 – stpx88 2012-02-21 21:32:41
评论的最后部分是一个问题?你可以通过简单的引用来访问'onClick'中的任何'MyActivity'成员。 – Luksprog 2012-02-21 21:38:12