#java #android #android-fragments #android-listfragment
#java #Android #android-фрагменты #android-listfragment
Вопрос:
Я пытаюсь отобразить список, используя ListFragment и пользовательский адаптер. Каждая строка содержит текстовое представление и кнопку. Это выглядит так :
При нажатии кнопки я хочу, чтобы элемент списка изменился. Для того, чтобы сделать это, я хочу заменить существующий ListFragment другим. Моя проблема в том, что второй фрагмент добавляется поверх первого, вот так :
Вот код, который выполняется, когда я нажимаю на кнопку, в пользовательском ArrayAdapter :
public void onClick(View view) {
//Some unrelated stuff
//I want to replace the old ListGeneratedFragment by a new one
ListGeneratedFragment fragment = new ListGeneratedFragment();
((MainActivity)getContext())
.getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_list_meals, fragment)
.commit();
}
});
Я уже использовал ту же технику в других частях своего кода, и она отлично работает. Я не понимаю, почему старый фрагмент здесь не заменяется.
Комментарии:
1. Ваш первый фрагмент также находится в
R.id.main_list_meals
контейнере? Как этот первый фрагмент добавляется в контейнер?2. Да, первый фрагмент также находится в контейнере R.id.main_list_meals. Он добавляется с помощью getChildFragmentManager().beginTransaction.replace(…).commit(), Поэтому он добавляется таким же образом, но в этом случае он не работает
3. Итак, в одном случае вы используете Activity
getSupportFragmentManager()
, а в другом случае вы используете совершенно другой,FragmentManager
поскольку вы используетеgetChildFragmentManager()
какой-то родительский фрагмент?