Android открыть базу данных SQLite во фрагменте - PullRequest
0 голосов
/ 14 июля 2020

Я нахожусь во фрагменте в Android Studio java и хочу сохранить и прочитать что-то там в базе данных SqLite. Для экономии я просто использую этот код:

databaseHu = getBaseContext().openOrCreateDatabase(databaseName_Notes, MODE_PRIVATE, null);
databaseHu.execSQL("CREATE TABLE IF NOT EXISTS " + Tabel_Hu_Name + "(subject TEXT, tasks TEXT, dayofyear INT, day INT, month INT, year INT)");
databaseHu.execSQL("INSERT INTO  " + Tabel_Hu_Name + " VALUES ('" + subject.getText().toString() + "','" + tasks.getText().toString() + "','" + c.get(Calendar.DAY_OF_YEAR) + "','" + c.get(Calendar.DAY_OF_MONTH) + "','" + c.get(Calendar.MONTH) + "','" + c.get(Calendar.YEAR) + "')");
databaseHu.close();

Но поскольку я нахожусь во фрагменте, он отмечает:

getBaseContext()

как ошибку. Как я могу это решить? Заранее спасибо!

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете использовать getActivity (), например,

databaseHu = getActivity().getBaseContext().openOrCreateDatabase(databaseName_Notes, MODE_PRIVATE, null);

, но это может вызвать исключение nullPtrException. Вместо этого вы можете переопределить эту функцию и создать вот так:

Activity activity;
@override
public void onViewCreated(View view, Bundle savedInstanceState) {
    if(getActivity()==null){
        activity = getActivity;
    }
}

Затем используйте это так,

databaseHu = activity.getBaseContext().openOrCreateDatabase(databaseName_Notes, MODE_PRIVATE, null);
...