Не пойму почему не работает FragmentTransaction.addToBackStack

339
24 августа 2017, 19:27

Пытаюсь сделать простой файл менеджер. Есть активити и в ней фрагмент с 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;
    }

Может кто объяснить почему так?

Answer 1

Скорее всего, для установки корневого фрагмента, Вы также используете метод replace().

Вам надо установить корневой фрагмент методом add(), а потом уже остальные накладывать поверх него методом replace(), пример:

Для установки корневого фрагмента:

getFragmentManager().beginTransaction()
        .add(R.id.content, fragment, fragmentTag)
        .commit();

Для наложения фрагментов поверх него:

getFragmentManager().beginTransaction()
        .replace(R.id.content, fragment, fragmentTag)
        .addToBackStack(fragmentName)
        .commit();
READ ALSO
Доступ к произвольной строке файла

Доступ к произвольной строке файла

Здравствуете, столкнулся с вопросом доступа к произвольной строки в файлеЕсли я хочу вывести например 67000 строку

215
Как использовать общий SharedPreference между Unity и Android?

Как использовать общий SharedPreference между Unity и Android?

Моя основная задача заключается в том чтобы, научить Unity читать значения из SharedPreference, я пробовал следовать этой инструкции, но ничего не работает,...

209
Создание новой строки с помощью java

Создание новой строки с помощью java

Имеются две таблицы Departments и EmployeesПри выборе строки в Departments происходит переход по employeesID в таблицу Employees

226