У меня есть приложение, использующее базу данных SQLite, но на половине устройств android возникает проблема с его запуском, и я получаю эту ошибку. Хотя я использую эти строки:
DatabaseHelper databaseHelper = new DatabaseHelper(getActivity());
SQLiteDatabase database = databaseHelper.getWritableDatabase();
databaseHelper.onCreate(database);
кода для запуска моей базы данных, тем не менее, я получил эту ошибку:
Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference`.
Я был бы очень рад, если вы поможете мне разобраться эта проблема.
Следующие коды предназначены для моего класса помощника по базе данных: `publi c class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, "foods_database.db", null, 2);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists foods(sFoodName text, sUniteIndex text)");
}
public void deleteFoodsTable(SQLiteDatabase database){
database.execSQL("drop table if exists foods");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}`
И эти строки кода предназначены для запуска базы данных помощник и добавление элемента в базу данных:
DatabaseHelper databaseHelper = new DatabaseHelper(getActivity());
SQLiteDatabase database = databaseHelper.getWritableDatabase();
databaseHelper.onCreate(database);
ContentValues values = new ContentValues();
for (int i = 0; i < foodsList.size() ; i++){
values.put("sFoodName" , foodsList.get(i).getFoodName());
values.put("sUniteIndex" , TextUtils.join("," , foodsList.get(i).getUnitesIndexArray()));
database.insert("foods" , null , values);
}
database.close();