Пытаюсь сделать простой файл менеджер. Есть активити и в ней фрагмент с recyclerView. При нажатии на элемент идет проверка: если директория, то вызываю метод активности, который заменит фрагмент на актуальный и добавит в backstack.
При нажатии кнопки back первый раз ничего не происходит. Второй раз - закрывает приложение.
Код обработки нажатия(В фрагменте).
public void onClick(View view) {
if (item.isDirectory()){
mCurentPath = item.getPath();
mOnDirClickListener.onDirClick(mCurentPath);
return;
}
......
}
Код в активити.
@Override
public void onDirClick(String path) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
FragmentPicker fragment = FragmentPicker.newInstance(path);
ft.addToBackStack(null);
ft.replace(R.id.fragmentContainer,fragment);
ft.commit();
mCurentPath = path;
}
Может кто объяснить почему так?
Скорее всего, для установки корневого фрагмента, Вы также используете метод replace().
Вам надо установить корневой фрагмент методом add(), а потом уже остальные накладывать поверх него методом replace(), пример:
Для установки корневого фрагмента:
getFragmentManager().beginTransaction()
.add(R.id.content, fragment, fragmentTag)
.commit();
Для наложения фрагментов поверх него:
getFragmentManager().beginTransaction()
.replace(R.id.content, fragment, fragmentTag)
.addToBackStack(fragmentName)
.commit();
Сборка персонального компьютера от Artline: умный выбор для современных пользователей