В actionBar находится кнопка "Добавить", при нажатии на которую должен отображаться фрагмент с ListView, в котором содержится список данных, взятых из БД.
Обработчик нажатия в MainActivity:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
fragmentTransaction = getFragmentManager().beginTransaction();
switch (id) {
case R.id.action_add:
fragmentTransaction.replace(R.id.content_frame, fragmentAllIngredients);
break;
case R.id.action_search:
break;
default:
break;
}
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
return super.onOptionsItemSelected(item);
}
Метод onStart в самом фрагменте:
@Override
public void onStart() {
super.onStart();
context = getActivity().getApplicationContext();
DBAssetHelper dbSetup = new DBAssetHelper(context);
dbSetup.getWritableDatabase();
try {
SQLiteOpenHelper databaseHelper = new DBOpenHelper(context);
SQLiteDatabase db = databaseHelper.getReadableDatabase();
String[] columns = {DBOpenHelper.TableAllIngredientsColumnName};
Cursor cursor = db.query(DBOpenHelper.TableAllIngredients, columns, null, null, null, null, DBOpenHelper.TableAllIngredientsColumnName);
if (cursor.moveToFirst()) {
String[] ingredients = new String[cursor.getCount()];
int i = 0;
do {
ingredients[i] = cursor.getString(0);
i++;
}
while (cursor.moveToNext());
ListView lviAllIngredients = view.findViewById(R.id.lvi_allIngredients);
ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, ingredients);
lviAllIngredients.setAdapter(adapter);
}
cursor.close();
db.close();
} catch (SQLiteException e) {
Toast.makeText(context, "База данных недоступна" + '\n' + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
Пройдясь по отладке, видно, что БД считывается корректно и данные заносятся в массив ingredients
. Однако, на экране отображается пустой ListView. В чем может быть причина?
UPD: попробовал изменить текст в TextView, но текст не поменялся. Видимо, дело в неправильном взаимодействиями с элементами экрана из фрагмента
Посадите код заполнения списка в Fragment.onCreateView()
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть пакет provider/lang, в нем два языковых файлаОдин из них дефолт, на случай если язык не найден
Как упаковать и распаковать несколько текстовых файлов в ARJ архив и наоборот на JAVAВ проекте не рекомендуется использование ARJ архиваторов