Эта страница документации Android в разделе "Обмен данными между фрагментами" описывает, как решить совместное использование выбранного элемента в потоке основных сведений с помощью ViewModel
. Однако решение работает только на больших устройствах, где вы помещаете оба фрагмента в один и тот же файл Activity
. На небольших устройствах общий подход состоит в том, чтобы иметь фрагмент детали в своем собственном DetailActivity
, и тогда два фрагмента будут иметь разные экземпляры ViewModel
, поэтому подход не сработает.
Итак, мой вопрос: как вы обобщаете это на все размеры устройств?
У меня есть одна идея, я мог бы поместить два фрагмента в одну и ту же активность даже на небольших устройствах. Положим, это идет вразрез с каждой реализацией основного потока деталей, которую я когда-либо видел. Можно было бы реализовать навигационную подгонку. И тогда DetailActivity
будет использоваться только для отображения отдельных элементов в качестве реакции на намерения. Он может создать экземпляр SharedViewModel
и установить элемент, переданный как selectedItem
. Затем фрагмент детали может получить экземпляр SharedViewModel
таким же образом, и ему не нужно различать два родительских действия.
Этот вопрос похож, но люди в комментариях жаловались, что он слишком широкий и неясный.