2016-06-20 12 views
-2

これは私の2番目のアプリで、最初のアプリは99%のデザインだったので、これは私の検索に適切なキーワードを使用していない可能性があるため3時間の解決になりました。これはおそらく非常に簡単なことです。私はそれを見つけることができません。これは私が現在保存しないために使用しています私のコードはデータをSQliteに保存しようとすると問題が発生する

FATAL EXCEPTION: main 
                    Process: nl.pluuk.gelduren, PID: 29876 
                    java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference 
                     at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223) 
                     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) 
                     at nl.pluuk.gelduren.Add_client.saveData(Add_client.java:76) 
                     at nl.pluuk.gelduren.Add_client$3.onClick(Add_client.java:67) 
                     at android.view.View.performClick(View.java:5233) 
                     at android.view.View$PerformClick.run(View.java:21209) 
                     at android.os.Handler.handleCallback(Handler.java:739) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:152) 
                     at android.app.ActivityThread.main(ActivityThread.java:5497) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

です:私は2 TextViews、1スピナー、およびボタンで自分のデータベースに情報を保存しようとすると

は、私はこのエラーメッセージが表示されます任意のデータ

public void save(){ 
     save = (Button)findViewById(R.id.button_save_client); 
     save.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       System.out.println("Save Button Clicked"); 
       Client_textView = (TextView)findViewById(R.id.inputform_client_name); 
       Rate_textView = (TextView)findViewById(R.id.inputform_rate); 
       Pay_Period_textView = (Spinner)findViewById(R.id.spinner_pay_period); 
       Client = "" + Client_textView.getText(); 
       Rate = Integer.parseInt("" + Rate_textView.getText()); 
       Pay_Period = "" + Pay_Period_textView.getSelectedItem(); 

       saveData(); 
      } 
     }); 
    } 



    public void saveData(){ 
     // Gets the data repository in write mode 
     SQLiteDatabase db = mDbHelper.getWritableDatabase(); 

// Create a new map of values, where column names are the keys 
     ContentValues values = new ContentValues(); 
     values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_CLIENT_NAME, Client); 
     System.out.println("Yes, i'm in your log"); 
     values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_RATE, Rate); 
     values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_PAY_PERIOD, Pay_Period); 

// Insert the new row, returning the primary key value of the new row 
     long newRowId; 
     newRowId = db.insert(
       FeedReaderContract.FeedEntry.TABLE_NAME, 
       null, 
       values); 
    } 

このコードはすべてAdd_clientの内側にあります。 Add_client.java:76はラインを参照しているエラー:SQLiteDatabase db = mDbHelper.getWritableDatabase(); Add_client.java:67はラインを参照しているエラー:私は列があることを確認しました76

おそらくラインによって引き起こされるsaveData(); System.out.println("Column count:" + c.getColumnCount());

これは、私が予想していた3つの列があることを私に教えてくれました。 は私もチェック列内のすべてのデータがしてあった場合:こちらを参照するには何も、データベースが空を開始するためにも期待していたされています

Boolean rowExists; 
     if (c.moveToFirst()) 
     { 
      System.out.println(c.getColumnName(0)); 
      rowExists = true; 

     } else 
     { 
      System.out.println("Nothing to see here"); 
      rowExists = false; 
     } 

これは私に出力を与えました。

私のコードで間違いがありますが、これらのエラーを私に打ち消してしまいますか?

他に必要な情報はありますか?喜んで編集に含めます。

+0

はmDbHelperper initializedですか?おそらくsaveData()を呼び出すときにはnullです。それを記録して確認してください。 – Sanj

答えて

2

あなたのSQliteOpenHelperに渡されたコンテキストのように見えます。この場合、mDBHelperはnullです。

+0

getBaseContext()の代わりに 'this'を使用しましたが、現在は動作しているようです。 –

関連する問題