Комментарии 4
Как Андроид-разработчик, я иногда поражаюсь, насколько Гугл любит переусложнять и переизобретать вещи.
+2
Переизобретать любит. А переусложнения то в о чем? Обычный как по мне observer.
+1
Ну, например, в том, что передачей-получением результатов у нас по каким-то причинам заведует FragmentManager. По идее, это не должно быть его заботой, это должно быть заботой отдельного класса, который занимается только получением-передачей этих результатов. Диаграмма с тем, какой FragmentManager нужно использовать, чтобы правильно получить результаты — это весело, конечно. Захотел использовать Fragment внутри другого Fragment'а в одном месте, а в другом внутри Activity? Пиши if-else на выбор FragmentManager'а.
Короче говоря, обычный observer становится совсем необычным.
Плюс нет никакого типирования результата. Хочешь узнать, что тебе пришло из другого фрагмента? Полезай, дружок, в код этого фрагмента и узнай. А если уж вдруг кто-то ошибся и переиспользовал ключ с другим типом данных, то лови ClassCastException.
Понятно, конечно, что все это сделано максимально адски в связи с жизненным циклом Fragment/Activity и возможностью убийства процесса, а, значит, нужно сохранять состояние и его восстанавливать, но выглядит это чересчур неуклюже и громоздко.
Короче говоря, обычный observer становится совсем необычным.
Плюс нет никакого типирования результата. Хочешь узнать, что тебе пришло из другого фрагмента? Полезай, дружок, в код этого фрагмента и узнай. А если уж вдруг кто-то ошибся и переиспользовал ключ с другим типом данных, то лови ClassCastException.
Понятно, конечно, что все это сделано максимально адски в связи с жизненным циклом Fragment/Activity и возможностью убийства процесса, а, значит, нужно сохранять состояние и его восстанавливать, но выглядит это чересчур неуклюже и громоздко.
0
Качественный перевод
developer.android.com/training/basics/fragments/pass-data-between
developer.android.com/training/basics/fragments/pass-data-between
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Android Fragment Result Listener