[英]Null Pointer Creating SQLite Database
为什么这两行代码会引发NPE?
SQLiteDatabase db;
db = openOrCreateDatabase("TestingData.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
堆栈跟踪:
08-23 10:33:14.285: ERROR/AndroidRuntime(1001): Caused by: java.lang.NullPointerException
08-23 10:33:14.285: ERROR/AndroidRuntime(1001): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
08-23 10:33:14.285: ERROR/AndroidRuntime(1001): at org.*****.android.CopyOfSQLLite.data(CopyOfSQLLite.java:14)
08-23 10:33:14.285: ERROR/AndroidRuntime(1001): at org.******.android.*****.****(****.java:200)
08-23 10:33:14.285: ERROR/AndroidRuntime(1001): at org.********.android.****.onCreate(DashboardPage.java:25)
08-23 10:33:14.285: ERROR/AndroidRuntime(1001): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-23 10:33:14.285: ERROR/AndroidRuntime(1001): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
您的ContextWrapper没有基本的Context。 您很可能没有在正确的位置调用此方法,但是如果没有更多的代码,我无法说更多。
Android的好处是它是开源的 。 因此我们可以看到openOrCreateDatabase()
的实现方式如下:
public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) {
return mBase.openOrCreateDatabase(name, mode, factory);
}
我看到此代码mBase
NPE的唯一方法是mBase
为null。 根据您的调用约定,我假设您的类派生自android.content.ContextWrapper
? 如果是这样,您是否确保在实例化类时设置了基本上下文( mBase
)? 如果不是,那就是导致问题的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.