2012-02-21 77 views
0

当我尝试从我传递给我的数据库方法的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对象?这是不好的做法,我应该只是通过所有这些变量的方法?

注:我知道一个事实,即值不为空。

在此先感谢。

+0

如果你在这一行上得到一个'NullPointerException',这意味着你的'values'对象为null。你发布的是完整的'onClick'方法吗? – Luksprog 2012-02-21 20:55:07

+0

我发布的是一个总结。我不知道我以前做错了什么,但现在正在工作。我一直试图弄清楚几个小时。如何在'onClick'方法内访问'MyActivity'类的成员变量 – stpx88 2012-02-21 21:32:41

+0

评论的最后部分是一个问题?你可以通过简单的引用来访问'onClick'中的任何'MyActivity'成员。 – Luksprog 2012-02-21 21:38:12

回答

0

看起来你不像打开数据库mDb,bro。你必须这样做。

+0

我总结了一下代码。 “//其他方法......”部分完成了这一切。问题在于操纵ContentValues对象。 – stpx88 2012-02-21 21:38:23

相关问题