我的扩展 ContentProvider 的 userDatabase 的 onCreate 没有被正确调用
这是我的一些 userBatabase 代码:
public class userDatabase extends ContentProvider {
private MainDatabaseHelper mOpenHelper;
public userDatabase(){}
public static final class MainDatabaseHelper extends SQLiteOpenHelper{...}
@Override
public boolean onCreate() {
mOpenHelper = new MainDatabaseHelper(getContext());
return true;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
long id = mOpenHelper.getWritableDatabase().insert("Users", null, values);
return Uri.withAppendedPath(CONTENT_URI, "" + id);
}
...
}
在我的主要活动中,我调用:
userDatabase cpDatabase = new userDatabase();
但是当我尝试打电话时cpDatabase.insert(userDatabase.CONTENT_URI, values);
mOpenHelper.getWritableDatabase().insert("Users", null, values);
调用时,所有内容都在 insert 内崩溃。
我发现这mOpenHelper.getWritableDatabase()
是问题所在,因为它甚至无法自行运行,然后我发现这是因为 mOpenHelper 为空。
我在构造函数中实例化 mOpenHelper,所以我认为它没有运行。一些日志消息证实了这一点,当我调用userDatabase cpDatabase = new userDatabase();
我的日志消息时,显示 userDatabase() 构造函数运行正常,但 onCreate 从未运行,因此 mOpenHelper 从未实例化。
(注意:通过这些日志消息,我注意到我的 userDatabase 的构造函数和 onCreate 在我的应用程序启动时被调用。我不知道为什么或在哪里。我不明白为什么在我尝试创建实例之前运行它。和即使它运行了,mOpenHelper 仍然没有初始化,当我创建一个实例时,构造函数运行但 onCreate 没有。)
可能会发生什么,我怎样才能让我的 onCreate 运行?