我有一个自定义 ContentProvider,带有一个自定义成员 SQLiteDatabaseHelper 在尝试插入我的数据库时,在我的插入中,我实例化了我的 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 不为空。我知道 dbHelper 构造函数运行了。但是 dbHelper onCreate 从未运行过。
我的猜测是问题是助手被实例化但从未创建,可能有什么问题?
注意:我在没有内容提供者的情况下尝试了相同的过程,我的活动中没有助手,一切正常。然而,当我在内容提供者内部这样做时它不会......?
可能有什么问题???