gpt4 book ai didi

java - 无法读取数据库 - NullPointerException

转载 作者:行者123 更新时间:2023-12-01 12:42:00 24 4
gpt4 key购买 nike

这应该很容易,但我无法在不抛出异常的情况下创建OrReadDatabase

 public class DatabaseStuff extends ListActivity {
private SQLiteDatabase _db;

public DatabaseStuff() {
_db = openOrCreateDatabase("Db", MODE_PRIVATE, null); 'eeeeek
}

它抛出异常。我对 Java 完全陌生,Logcat 似乎对我来说太多了,无法理解

java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3835)
at android.view.View.performClick(View.java:4450)
at android.view.View$PerformClick.run(View.java:18600)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5026)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at android.view.View$1.onClick(View.java:3830)
            at android.view.View.performClick(View.java:4450)
            at android.view.View$PerformClick.run(View.java:18600)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5026)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
            at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:250)
at com.lmsites.dave.lifecrymailinglist.MyActivity$DatabaseStuff.<init>(MyActivity.java:109)
at com.lmsites.dave.lifecrymailinglist.MyActivity.SaveClick(MyActivity.java:71)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3830)
            at android.view.View.performClick(View.java:4450)
            at android.view.View$PerformClick.run(View.java:18600)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5026)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
            at dalvik.system.NativeStart.main(Native Method)

我需要指出,当我将方法移动到 MyActivity 类中时,它会按预期工作。当我将函数移动到它自己的类中时,就会出现问题。

有人可以帮助我理解为什么我无法创建这个对象吗?

最佳答案

您的问题是您试图以错误的方式创建一个Activity(您的类扩展了ListActivity)。您不应该显式调用 Activity 的构造函数。

Android 中的Activity 具有生命周期。它由 startActivity 方法启动,该方法调用生命周期方法(例如 onCreate)来初始化 Activity

当您创建 Activity 实例而不调用这些方法时,它不会正确初始化,这会导致 openOrCreateDatabase 等方法失败。

关于java - 无法读取数据库 - NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25017720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com