Определение области видимости по нескольким фрагментам (не по активности) с использованием компонента навигации - PullRequest
0 голосов
/ 08 июня 2019

Я использую компонент навигации, я хочу, чтобы модель представления была разделена между несколькими фрагментами, но они должны быть очищены, когда я оставляю фрагменты (следовательно, не определяю их область действия). Я пытаюсь взять одинактивность много фрагментов подход.Мне удалось добиться этого с помощью нескольких хостов навигации и определения области фрагментов к нему с помощью getParentFragment, но это только приводит к большему количеству проблем, связанных с переносом фрагментов в другие родительские фрагменты, потерей кнопки возврата, работающей без проблем, и другими взломами, чтобы заставить что-то работать, что должнобыть довольно простымУ кого-нибудь есть хорошая идея, как этого добиться?Я задавался вопросом, есть ли что-нибудь с getViewModelStore, которое я мог бы использовать, учитывая изображение ниже, я хочу охватить модель представления для createCardFragment2 и использовать ее во всем после нее (addPredictions, editImageFragment и других, которые я еще не добавил), но еслиЯ возвращаюсь к главному фрагменту и хочу очистить вид моделей.

Кстати, я не могу просто вызвать clear в хранилище моделей представлений mainFragment, так как здесь есть другие модели представлений, которые не следует очищать, я думаю, мне нужен способ сообщить хосту nav, каким должен быть родительский фрагмент.я знаю, что это не будет вещь или способ сделать модель представления новой, если я перейду с mainFragment или cardPreviewFragment

nav graph

1 Ответ

0 голосов
/ 21 июня 2019

Да, теперь можно отобразить модель представления для навигационного графа, начиная с androidx.navigation:*:2.1.0-alpha02. См. Примечания к выпуску здесь и пример API здесь . Все, что вам нужно дать, это R.id для вашего navgraph. Я нахожу это немного раздражающим в использовании, хотя, потому что обычно viewmodels инициализируются в onCreate, что невозможно с этой областью, потому что контроллер nav еще не гарантированно будет установлен вашим фрагментом nav nav (я обнаружение этого имеет место с изменениями конфигурации).

Кроме того, если вы не хотите, чтобы ваш mainFragment был частью этой области, я бы предложил убрать его и, возможно, использовать вложенный навигационный граф .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...