我userDatabase的擴展ContentProvider的的的onCreate不正確稱爲MyContentProvider.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);
被調用。
我發現mOpenHelper.getWritableDatabase()
是問題,因爲它甚至不會自行運行,然後我發現這是因爲mOpenHelper爲空。
我在構造函數中實例化mOpenHelper,所以我認爲它沒有運行。有幾條日誌消息證實了這一點,當我打電話給userDatabase cpDatabase = new userDatabase();
時,我的日誌消息顯示userDatabase()構造函數運行正常,但onCreate從未運行,所以mOpenHelper從未實例化過。我注意到我的userDatabase的構造函數和onCreate在我的應用程序啓動時被調用,我不知道爲什麼或者在哪裏,我不明白爲什麼在我嘗試創建之前運行它一個實例,即使它運行,mOpenHelper仍然沒有初始化,當我創建一個實例,構造函數運行,但onCreate沒有。)
什麼可能發生,以及如何使我的onCreate跑?