0

我正在学习如何在 Android 活动中使用 sql 数据库。我正在从本教程中学习。我有一个活动,我使用教程中的数据库处理程序。我在活动类中声明了变量。

DatabaseHandler db;

在 oncreate 方法中,我创建了一个新的 DatabaseHandler 对象:

DatabaseHandler db = new DatabaseHandler(this);

单击按钮后,我想使用数据库。所以我在 onClick 方法中使用了连接,但是我得到一个空指针异常,除非我在 onclick 中创建一个新对象。为什么会这样,对于不同类型的对象,我可以像在这个例子中那样声明变量。

DatabaseHandler 的构造函数是:

 public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

超级是 SQLiteOpenHelper。

4

1 回答 1

1

你得到空异常是因为你实例化不正确。您将 db 声明为一个字段,但随后实例化了一个不同的对象DatabaseHandler db = new DatabaseHandler(this);<-- 作为局部变量。因此,您的 onClick 只能访问未实例化的字段。要解决此问题,您需要在 oncreate 中用 this 替换您所拥有的内容。

db = new DatabaseHandler(this);

或者如果 onClick 在 onCreate 中,则通过应用 final 修饰符。(并删除字段对象)

于 2012-11-17T20:02:26.907 回答