Кнопка назад не работает, когда я хочу вернуться к предыдущему фрагменту
Я управляю двумя фрагментами в моей MainActivity.
Одним из них является подкласс ListFragment для отображения списка элементов.
Основная идея заключается в переходе к другому представлению списка, когда пользователь нажимает на один из элементов, и пользователь может вернуться к предыдущему представлению списка, нажав кнопку "Назад".
Код для передачи в новый список отображается следующим образом:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
NewFragment newFragment = new NewFragment();
newFragment.setArguments(getIntent().getExtras());
transaction.replace(R.id.fragment_layout, newFragment);
transaction.addToBackStack(null);
transaction.commit();
Однако я просто выхожу из приложения, не возвращаясь к предыдущему представлению. Что я делаю неправильно?
2 ответа
В отличие от действий, с фрагментами вы должны явно добавлять вещи в "задний стек". в основном, когда ваше приложение отображает новый фрагмент, который вы хотите вернуть, чтобы вернуться к фрагменту предварительного просмотра, вы вызываете FragmentTrasaction.addToBackStack()
,
фреймворк обрабатывает выталкивание фрагмента из заднего стека, когда пользователь нажимает назад. если вам нужно что-то более сложное, вы можете отменить нажатие кнопки "Назад" для своего фрагмента. этот вопрос охватывает это,
Кнопка "Назад" закрывает верхнюю активность и не перемещается назад в истории фрагментов. Вы должны сделать это самостоятельно с помощью popBackStack()