これは私の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;
}
これは私に出力を与えました。
私のコードで間違いがありますが、これらのエラーを私に打ち消してしまいますか?
他に必要な情報はありますか?喜んで編集に含めます。
はmDbHelperper initializedですか?おそらくsaveData()を呼び出すときにはnullです。それを記録して確認してください。 – Sanj