Страницы

Поиск по вопросам

вторник, 12 марта 2019 г.

Передача данных между фрагментами через модель в Clean Architecture

Подскажите поподробней как реализовать такое? Нужно передать данные, например, какие EditText или CheckBox были выбраны на предыдущем фрагменте, чтобы работать с ними в текущем фрагменте.
Не в чистой архитектуре передавалось через
Bundle bundle = new Bundle(); bundle.putString("some_key", "some string"); fragment.setArguments(bundle);
Далее вытаскиваем
getArguments().getString("some_key")
Но слышал. что в чистой архитектуре это делается таким способом
Создается модель. Эта модель является глобальной для всех презентеров внутри этой активити. Остальные презентеры при надобности имеют право писать в модель, а презентер фрагмента должен соответственно реагировать на ее изменения" я имею ввиду взаимодействие через модель
Хотелось бы в идеале увидеть пример, как это делается. Создавать свой репозиторий, для того чтобы передать пару строк или объект между фрагментами? Я использую Dagger2 можно ли тупо провайдить
Model provideModel(){ return new Model(); }
Сейчас у меня в каждый презентер своя модель попадает. Тогда нужно ее сделать синглтоном? Конкретно в моем случае я кликаю на один из элементов RecyclerView и мне нужно передать значение этого элемента.
В общем пока нет понимания правильности.


Ответ

Локальная модель нужна для передачи результата с экрана на предыдущий либо между двумя фрагментами на экране одновременно.
Для запуска нового экрана, параметры запуска передаются в аргументах через бандл как и всегда. То есть схема такая:
Во вью происходит клик на элемент в списке -> у презентера вызывается метод onItemClick(item) -> Презентер запускает новый экран, передав ему нужные параметры

Комментариев нет:

Отправить комментарий