私はSQLiteのにアクセスするためにブローカーを構築するための簡単なエクササイズをやっている、私の主な活動は次のとおりです。アンドロイドスタジオエラー:「java.lang.NullPointerExceptionが:仮想メソッドを呼び出そうと...」
package com.example.mauro.localtest;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
public class MainActivity extends Activity {
DbBroker db = new DbBroker(this, "my_database", null, 1);
SQLiteDatabase sqldb = db.getWritableDatabase();
public int test = db.insertTest("New test", "Test created from app");
}
DbBrokerクラスですが:
package com.example.mauro.localtest;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by Mauro on 09/06/2016.
*/
public class DbBroker extends SQLiteOpenHelper {
public DbBroker(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase arg0) {
arg0.execSQL("create table tests (id INTEGER PRIMARY KEY, publicid INTEGER, testname TEXT, description TEXT");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
public int insertTest(String name, String desc){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues vals = new ContentValues();
vals.put("testname", name);
vals.put("description", desc);
return (int) db.insert("tests", null, vals);
}
}
私はプロジェクトを実行すると、このエラーは、アプリケーションを停止します。
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.mauro.localtest/com.example.mauro.localtest.MainActivity}: 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
誰がアンダーに私を助けることができますどこに問題がありますか?
マニフェストでアクティビティを定義しましたか? –
コードをDbBroker db = new DbBroker(getActivity()、 "my_database"、null、1)として変更して、一度試してみることをお勧めします。 現在のところ、コンテキストのみがnullの候補です。 同様の質問がありました:http://stackoverflow.com/questions/30064080/android-app-crashes-on-startup-sqlite-nullpointereception-in-contactsフラグメント http://stackoverflow.com/questions/29545524/android-nullpointerexception-データベースへの読み込みができない - データベース内のリストビュー - 希望すると、問題が解決する場合があります。 – pbajpai21
私はあなたがあなたのDBブローカーをどのコンテキストがnullなのでwomgの場所で初期化していると思います。このクラスが開始される場所から関数コードを親切に共有してください。 –