我在尝试从ContentValues对象中检索/插入值时遇到NullPointerException,而我正在传递给我的数据库方法。我的db表中有几列,而不是将所有这些列作为params传递给方法,我试图简化它。
以下是代码示例:
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对象吗?这是不好的做法,我应该将所有这些变量传递给方法吗?
注意:我知道这些值不为空。
提前致谢。
答案 0 :(得分:0)
看起来你没有打开数据库mDb,兄弟。你必须这样做。