カスタム メンバー SQLiteDatabaseHelper を持つカスタム ContentProvider があります。データベースに挿入しようとしているときに、挿入内で DatabaseHelper をインスタンス化し、そのインスタンスで getWritableDatabase() を呼び出して SQLiteDatabase オブジェクトを取得しようとしましたが、 getWritableDatabase() 呼び出しで強制終了します。
私の活動:
public class UserForm extends Activity {
public void onSubmitClick(View v){
userDatabase db = new userDatabase();
db.insert(userDatabase.CONTENT_URI, null);
...}
...}
私のヘルパーコード:
public static final class MainDatabaseHelper extends SQLiteOpenHelper{
public MainDatabaseHelper(Context context) {
super(context, DBNAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_MAIN);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS Users");
}
}
私の挿入:
public class userDatabase extends ContentProvider {
public Uri insert(Uri uri, ContentValues values) {
MainDatabaseHelper dbHelper = new MainDatabaseHelper(getContext());
SQLiteDatabase db = dbHelper.getWritableDatabase();
...}
...}
この最後の行で力が入ります。
dbHelper が null でないことはわかっています。dbHelper コンストラクターが実行されたことはわかっています。しかし、dbHelper onCreate は一度も実行されていません。
私の推測では、問題はヘルパーがインスタンス化されているが作成されていないことです。何が間違っているのでしょうか?
注: アクティビティ内のヘルパーであるコンテンツ プロバイダーを使用せずに同じプロセスを試したところ、すべて正常に機能しました。しかし、コンテンツ プロバイダー内で行うと、そうではありません...?
何が間違っている可能性がありますか???