我有一个尝试创建数据库的 Android.App.Application。我正在使用 SQLite db 示例代码。如果我在 Activity 中使用它,效果会很好。当我尝试在我的 Android.App.Application 中创建完全相同的东西时,它崩溃了。我不知道为什么。
当我从活动中调用它时:
public class Manager extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
fbdbhelper = new FishingBuddyOpenHelper(getApplicationContext());
db = fbdbhelper.getTbfw().getReadableDatabase();
}
创建了一个 sqlite 数据库 (/data/data/com.fishingbuddy/databases/)
从 Android.App.Application 完成后,它会失败:
public class FishingManager extends Application{
public FishingManager() {
fbdbhelper = new FishingBuddyOpenHelper(getApplicationContext());
db = fbdbhelper.getTbfw().getReadableDatabase();
}
09-22 21:19:18.386: E/AndroidRuntime(21881): 致命异常: main 09-22 21:19:18.386: E/AndroidRuntime(21881): java.lang.RuntimeException: 无法>实例化应用程序 com.fishingbuddy .logic.FishingManager: java.lang.NullPointerException 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:504) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4550) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.ActivityThread.access$1300(ActivityThread. java:153) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307) 09-22 21:19:18.386: E/AndroidRuntime( 21881): 在 android.os.Handler.dispatchMessage(Handler.java:99) 09-22 21:19:18.386:E/AndroidRuntime(21881): 在 android.os.Looper.loop(Looper.java:137) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.ActivityThread.main(ActivityThread.java :5227) 09-22 21:19:18.386: E/AndroidRuntime(21881): at java.lang.reflect.Method.invokeNative(Native Method) 09-22 21:19:18.386: E/AndroidRuntime(21881): at java.lang.reflect.Method.invoke(Method.java:511) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java :795) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 09-22 21:19:18.386: E/AndroidRuntime (21881): 在 dalvik.system.NativeStart.main(Native Method) 09-22 21:19:18.386: E/AndroidRuntime(21881): 由: java.lang.NullPointerException 09-22 21:19:18.386:E/AndroidRuntime(21881): 在 android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 com.fishingbuddy.logic.FishingManager.(FishingManager. java:26) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 java.lang.Class.newInstanceImpl(Native Method) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 java .lang.Class.newInstance(Class.java:1319) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:983) 09-22 21:19 :18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:968) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.LoadedApk.makeApplication( LoadedApk.java:499) 09-22 21:19:18.386: E/AndroidRuntime(21881): ... 11 更多在 android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 com.fishingbuddy.logic.FishingManager.(FishingManager.java:26) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 java.lang.Class.newInstanceImpl(Native Method) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 java.lang.Class.newInstance( Class.java:1319) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:983) 09-22 21:19:18.386: E/AndroidRuntime( 21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:968) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09 -22 21:19:18.386: E/AndroidRuntime(21881): ... 11 更多在 android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 com.fishingbuddy.logic.FishingManager.(FishingManager.java:26) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 java.lang.Class.newInstanceImpl(Native Method) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 java.lang.Class.newInstance( Class.java:1319) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:983) 09-22 21:19:18.386: E/AndroidRuntime( 21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:968) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09 -22 21:19:18.386: E/AndroidRuntime(21881): ... 11 更多getApplicationContext(ContextWrapper.java:109) 09-22 21:19:18.386: E/AndroidRuntime(21881): at com.fishingbuddy.logic.FishingManager.(FishingManager.java:26) 09-22 21:19:18.386: E /AndroidRuntime(21881): at java.lang.Class.newInstanceImpl(Native Method) 09-22 21:19:18.386: E/AndroidRuntime(21881): at java.lang.Class.newInstance(Class.java:1319) 09 -22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:983) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app .Instrumentation.newApplication(Instrumentation.java:968) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09-22 21:19:18.386 : E/AndroidRuntime(21881): ... 11 更多getApplicationContext(ContextWrapper.java:109) 09-22 21:19:18.386: E/AndroidRuntime(21881): at com.fishingbuddy.logic.FishingManager.(FishingManager.java:26) 09-22 21:19:18.386: E /AndroidRuntime(21881): at java.lang.Class.newInstanceImpl(Native Method) 09-22 21:19:18.386: E/AndroidRuntime(21881): at java.lang.Class.newInstance(Class.java:1319) 09 -22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:983) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app .Instrumentation.newApplication(Instrumentation.java:968) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09-22 21:19:18.386 : E/AndroidRuntime(21881): ... 11 更多在 com.fishingbuddy.logic.FishingManager.(FishingManager.java:26) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 java.lang.Class.newInstanceImpl(Native Method) 09-22 21:19 :18.386: E/AndroidRuntime(21881): at java.lang.Class.newInstance(Class.java:1319) 09-22 21:19:18.386: E/AndroidRuntime(21881): at android.app.Instrumentation.newApplication( Instrumentation.java:983) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:968) 09-22 21:19:18.386: E/AndroidRuntime( 21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09-22 21:19:18.386: E/AndroidRuntime(21881): ... 11 更多在 com.fishingbuddy.logic.FishingManager.(FishingManager.java:26) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 java.lang.Class.newInstanceImpl(Native Method) 09-22 21:19 :18.386: E/AndroidRuntime(21881): at java.lang.Class.newInstance(Class.java:1319) 09-22 21:19:18.386: E/AndroidRuntime(21881): at android.app.Instrumentation.newApplication( Instrumentation.java:983) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:968) 09-22 21:19:18.386: E/AndroidRuntime( 21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09-22 21:19:18.386: E/AndroidRuntime(21881): ... 11 更多19:18.386: E/AndroidRuntime(21881): 在 java.lang.Class.newInstance(Class.java:1319) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication (Instrumentation.java:983) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:968) 09-22 21:19:18.386: E/AndroidRuntime (21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09-22 21:19:18.386: E/AndroidRuntime(21881): ... 11 更多19:18.386: E/AndroidRuntime(21881): 在 java.lang.Class.newInstance(Class.java:1319) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication (Instrumentation.java:983) 09-22 21:19:18.386: E/AndroidRuntime(21881): 在 android.app.Instrumentation.newApplication(Instrumentation.java:968) 09-22 21:19:18.386: E/AndroidRuntime (21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09-22 21:19:18.386: E/AndroidRuntime(21881): ... 11 更多E/AndroidRuntime(21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09-22 21:19:18.386: E/AndroidRuntime(21881): ... 11 更多E/AndroidRuntime(21881): 在 android.app.LoadedApk.makeApplication(LoadedApk.java:499) 09-22 21:19:18.386: E/AndroidRuntime(21881): ... 11 更多
我正在使用应用程序,因为我正在为我的 FishingManager 使用单例模式。这一切都很好,直到我开始最后一部分,将我所有的数据保存到 SQLite 数据库中。
提前致谢