Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLiteDatabaseHelper的子类在调用getReadebleDatabase()时引发NullpointerException_Android_Sqlite_Android Sqlite_Android Database - Fatal编程技术网

Android SQLiteDatabaseHelper的子类在调用getReadebleDatabase()时引发NullpointerException

Android SQLiteDatabaseHelper的子类在调用getReadebleDatabase()时引发NullpointerException,android,sqlite,android-sqlite,android-database,Android,Sqlite,Android Sqlite,Android Database,我有一个名为DatabaseSuper的SQLiteDatabaseOpenHelper子类,它覆盖onCreate和onUpdate方法DatabaseController类是DatabaseSuper的子类,用于实现所有特定于应用程序的数据库操作 我的问题是,当我在DatabaseController类中的方法中调用getReadableDatabase()时,它会出现Nullpointer异常。 但是,如果我将SQLiteDatabase对象作为参数传递给该方法,该方法取自基类(Datab

我有一个名为
DatabaseSuper
SQLiteDatabaseOpenHelper
子类,它覆盖
onCreate
onUpdate
方法
DatabaseController
类是
DatabaseSuper
的子类,用于实现所有特定于应用程序的数据库操作

我的问题是,当我在
DatabaseController
类中的方法中调用
getReadableDatabase()
时,它会出现
Nullpointer异常。
但是,如果我将
SQLiteDatabase
对象作为参数传递给该方法,该方法取自基类
(DatabaseSuper)
,则不会抛出异常

方法

public String sendDate(SQLiteDatabase db) {

    //SQLiteDatabase db = getReadableDatabase();                 *line 1*

    Cursor cursor = db.rawQuery("select date from todo", null);
    StringBuffer stringBuffer = new StringBuffer();
    while (cursor.moveToNext()) {
        String date = cursor.getString(0);  
        stringBuffer.append(date + ":");
    }
    cursor.close();
    return stringBuffer.toString();
}
从活动类调用方法

String data = dataControllerObject.sendDate(new DatabaseSuper(this).getReadableDatabase());
错误

06-18 04:28:50.239: E/AndroidRuntime(5147): 
FATAL EXCEPTION: main
06-18 04:28:50.239: 
E/AndroidRuntime(5147): 
java.lang.RuntimeException:Unable to start activity ComponentInfo{com.example.dolist/com.example.dolist.SearchListView}:
java.lang.NullPointerException
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
06-18 04:28:50.239:

E/AndroidRuntime(5147):     
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.app.ActivityThread.access$600(ActivityThread.java:141)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.os.Handler.dispatchMessage(Handler.java:99)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.os.Looper.loop(Looper.java:137)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.app.ActivityThread.main(ActivityThread.java:5041)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at java.lang.reflect.Method.invokeNative(Native Method)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at java.lang.reflect.Method.invoke(Method.java:511)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at dalvik.system.NativeStart.main(Native Method)
06-18 04:28:50.239: E/AndroidRuntime(5147):
Caused by: java.lang.NullPointerException
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at com.example.dolist.DataController.sendDate(DataController.java:37)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at com.example.dolist.SearchListView.onCreate(SearchListView.java:34)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.app.Activity.performCreate(Activity.java:5104)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
06-18 04:28:50.239: E/AndroidRuntime(5147):
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
06-18 04:28:50.239: E/AndroidRuntime(5147):
... 11 more

在构造函数中传递给
SQLiteOpenHelper
上下文是
null

在呼叫部分

String data = dataControllerObject.sendDate(new DatabaseSuper().getReadableDatabase());

实际上,您没有在没有任何参数的情况下传入任何
上下文
-
新数据库super()
SQLiteOpenHelper
超类构造函数需要一个构造函数,因此您可能要传入一个显式的
null
。有关详细帮助,请发布您的构造函数代码。

抱歉,我已经将上下文参数传递给了构造函数,但忘了在此处提及。即使如此,异常情况仍然是关于传递到
SQLiteOpenHelper
的坏
上下文
而不是
getReadableDatabase()