尝试从ContentValues对象中检索值时,为什么我得到null?

时间:2012-02-21 20:46:13

标签: android

我在尝试从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对象吗?这是不好的做法,我应该将所有这些变量传递给方法吗?

注意:我知道这些值不为空。

提前致谢。

1 个答案:

答案 0 :(得分:0)

看起来你没有打开数据库mDb,兄弟。你必须这样做。