我有一个扩展SQLiteOpenHelper
的类,在活动中,我声明变量MQTT_Settings_DB
和SQLiteDatabase
如下所示。
问题是当我声明变量MQTT_Settings_DB
并在代码中显示全局初始化时,在运行时,此行
this.sqliteDB = this.mqttSettingsDB.getWritableDatabase();
commitToSQLiteDB()
中存在的导致应用程序崩溃并且我收到NPE
,为了解决此问题,我放置了
this.mqttSettingsDB
<{1>}中的如下
onAttach()
应用程序不会崩溃。
为什么对象onAttach() {
this.mqttSettingsDB = new MQTT_Settings_DB(getActivity());
}
在MQTT_Settings_DB
中定义且无法全局定义?
码:
onAttach
答案 0 :(得分:1)
private MQTT_Settings_DB mqttSettingsDB = new MQTT_Settings_DB(getActivity());
在片段附加到活动之前, getActivity()
会返回null
。将null传递给SQLiteOpenHelper
构造函数不会立即崩溃,但是当您尝试使用例如实例打开数据库时它将会崩溃。 getWritableDatabase()
。