每当我启动一个活动时,我都会收到空指针异常

时间:2014-02-18 12:09:43

标签: android nullpointerexception

每当我尝试加载我的活动时,我都会得到一个空指针异常,并且应用程序崩溃了指向此代码的日志cat

public Cursor getScores() {
    return ourDatabase.rawQuery("SELECT * FROM "+DATABASE_TABLE, new String[0]);
}

以下是logcat

02-18 10:12:37.719: E/AndroidRuntime(404): FATAL EXCEPTION: main
02-18 10:12:37.719: E/AndroidRuntime(404): java.lang.RuntimeException: Unable to start activity   ComponentInfo{com.example.connectfour/com.example.connectfour.ScoreActivity}: java.lang.NullPointerException
02-18 10:12:37.719: E/AndroidRuntime(404):  at       android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)  
02-18 10:12:37.719: E/AndroidRuntime(404):  at    android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
02-18 10:12:37.719: E/AndroidRuntime(404):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-18 10:12:37.719: E/AndroidRuntime(404):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-18 10:12:37.719: E/AndroidRuntime(404):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-18 10:12:37.719: E/AndroidRuntime(404):  at android.os.Looper.loop(Looper.java:123)
02-18 10:12:37.719: E/AndroidRuntime(404):  at android.app.ActivityThread.main(ActivityThread.java:3683)
02-18 10:12:37.719: E/AndroidRuntime(404):  at java.lang.reflect.Method.invokeNative(Native Method)
02-18 10:12:37.719: E/AndroidRuntime(404):  at java.lang.reflect.Method.invoke(Method.java:507)
02-18 10:12:37.719: E/AndroidRuntime(404):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-18 10:12:37.719: E/AndroidRuntime(404):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-18 10:12:37.719: E/AndroidRuntime(404):  at dalvik.system.NativeStart.main(Native Method)
02-18 10:12:37.719: E/AndroidRuntime(404): Caused by: java.lang.NullPointerException
02-18 10:12:37.719: E/AndroidRuntime(404):  at com.example.connectfour.Database.getScores(Database.java:57)
02-18 10:12:37.719: E/AndroidRuntime(404):  at com.example.connectfour.ScoreActivity$MyCursorAdapter.<init>  (ScoreActivity.java:21)
02-18 10:12:37.719: E/AndroidRuntime(404):  at   com.example.connectfour.ScoreActivity.onCreate(ScoreActivity.java:49)
02-18 10:12:37.719: E/AndroidRuntime(404):  at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-18 10:12:37.719: E/AndroidRuntime(404):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
02-18 10:12:37.719: E/AndroidRuntime(404):

1 个答案:

答案 0 :(得分:2)

这是错误的:

return ourDatabase.rawQuery("SELECT * FROM "+DATABASE_TABLE, new String[0]);

因为你没有传递任何参数,所以这将是正确的语法

return ourDatabase.rawQuery("SELECT * FROM "+DATABASE_TABLE, null);

[编辑(1)]

但是只有在您首先打开数据库时(首先是在调用getScores()之前)。

[编辑(2)]

类似的东西:

SQLiteDatabase ourDatabase = getApplicationContext().openOrCreateDatabase(DB_NAME, Context.MODE_PRIVATE, null);