2012-02-21 5 views
0

データベースメソッドに渡しているContentValuesオブジェクトから値を取得/挿入しようとすると、NullPointerExceptionが発生します。私は私のdbテーブルにいくつかの列を持っており、それらをすべてparamsとしてメソッドに渡すのではなく、少し単純化しようとしています。ContentValuesオブジェクトから値を取得しようとすると、なぜnullになるのですか?

は、ここでは、コードのサンプルです:ここでは、データベースの方法だ

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オブジェクトを操作することは許されないのですか?この悪い習慣です、私はすべての変数をメソッドに渡すだけですか?

注:値がnullではないことがわかっています。

ありがとうございます。

+0

この行に 'NullPointerException'がある場合、' values'オブジェクトがnullであることを意味します。あなたが投稿したのは完全な 'onClick'メソッドですか? – Luksprog

+0

私が投稿したのは要約でした。私は前に間違って何をしていたのか分かりません。私は何時間もそれを理解しようとしてきました。 'onClick'メソッドの中で' MyActivity'クラスのメンバ変数にアクセスする方法 – stpx88

+0

コメントの最後の部分は質問ですか? 'onClick'の中のあなたが' MyActivity'のメンバーにアクセスするには、それらを単純に参照するだけです。 – Luksprog

答えて

0

データベースmDbを開いたように見えません。あなたはそれをしなければならない。

+0

私はコードを要約した。 '/ /他のメソッド...'の部分はすべてそれを行いました。問題は、ContentValuesオブジェクトを操作することでした。 – stpx88

関連する問題