我正在学习如何在Android活动中使用sql数据库。我正在学习this tutorial。我有一个活动,我在教程中使用数据库处理程序。 我在activity类中声明了变量。
DatabaseHandler db;
在oncreate方法中,我创建了一个新的DatabaseHandler对象:
DatabaseHandler db = new DatabaseHandler(this);
我想在点击按钮后使用数据库。所以我在onClick方法中使用连接,但是我得到一个空指针异常,除非我在onclick中创建一个新对象。为什么这样,对于不同类型的对象,我可以像在本例中那样声明变量。
DatabaseHandler的构造函数是:
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
super是SQLiteOpenHelper。
答案 0 :(得分:1)
您正在获取null异常,因为您实例化不正确。你声明你的数据库是一个字段,然后实例化一个不同的对象DatabaseHandler db = new DatabaseHandler(this);
< - 作为一个局部变量。因此,您的onClick只能访问未实例化的字段。修复你需要在你的oncreate中替换你拥有的东西。
db = new DatabaseHandler(this);
或者如果onClick在onCreate中,则应用最终修饰符。 (并删除字段对象)