Дублировать существующий фрагмент - PullRequest
0 голосов
/ 09 марта 2020

Поскольку Turbolinks устарели на Android, я сам пытаюсь реализовать небольшую часть его функциональности.

Я пытаюсь использовать NavController и Фрагменты в моей заявке. Фрагмент в значительной степени содержит только веб-просмотр.

Теперь, когда кто-то нажимает на что-то в этом веб-просмотре, вместо того, чтобы загружать новую страницу в этом веб-просмотре, я хотел бы программно создать новый (экземпляр) Фрагмент и есть NavController для перехода на новую «страницу». Преимущество состоит в том, чтобы получить переход, плюс я могу использовать кнопку возврата системы для перехода на предыдущие страницы.

На данный момент я даже не уверен, что это возможно.

navigate() метод принимает идентификатор фрагмента. Если я передаю тот же идентификатор, что и текущий самый верхний фрагмент, ничего не происходит. Итак, моя идея состояла в том, чтобы как-то создать дубликат текущего фрагмента и передать что-то вроде navigate(ID_x).

Обратите внимание, что я новичок в Android и могу упустить что-то фундаментальное.

Редактировать: как запрос в комментариях, здесь в качестве примера

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
Bundle args = new Bundle();
args.putInt("number", 5);

navController.navigate(R.id.open_category, args);

"open_category" - это <action>, который должен отображать новый экземпляр того же фрагмента. Это действительно происходит (по крайней мере, вызывается onCreateView()), но NavController не поместит новый фрагмент на вершину стека, и я не могу вернуться к «старому» экземпляру фрагмента.

<action
    android:id="@+id/open_category"
    app:destination="@id/navigation_blank"
    />
...