Проектирование взаимодействия нескольких фрагментов и действий
Добрый день, у меня есть три мероприятия с соответствующими фрагментами A
, B
а также C
, Фрагмент A
является статическим фрагментом, остальные фрагменты являются динамическими.
Деятельность A
уже реализует слушатель для фрагмента A
, который используется для загрузки фрагмента B
в альбомной ориентации или перейти на новый экран в одной панели.
То, что я хочу, это когда определенная кнопка нажата во фрагменте B
который вызывает фрагмент C
Я хочу заменить его фрагментом C
в альбомной ориентации (фрагмент A
будет по-прежнему присутствовать) или откройте новый экран в режиме одной панели. У меня есть этот простой код в упражнении B onCreate
метод:
if (getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_LANDSCAPE) {
finish();
return;
}
Я пытаюсь избежать фрагмента связи, так как она недовольна. Так значит ли это, что я должен реализовать слушателей для фрагмента B
в обоих видах деятельности A
а также B
догадываюсь когда в альбомной ориентации A
загрузит фрагмент C
и в портрете, B
берет на себя? Есть ли способ лучше?. Я думал только о реализации слушателя в деятельности B
и переходя к деятельности A
когда в альбомной ориентации, но я думаю, что это было бы закончено, прежде чем он даже прошел, из-за кода выше. Какие-нибудь мысли?
1 ответ
... значит ли это, что я реализую прослушиватель для фрагмента B как в действии A, так и в B, полагаю, что когда в альбомной ориентации действие A загрузит фрагмент C и в портретной ориентации, B вступит во владение или есть лучший способ? Я думал только о том, чтобы реализовать слушателя в Деятельности B и перейти к Деятельности A, когда в альбомной ориентации, но я думаю, что это было бы закончено до того, как он прошел, из-за кода выше.
Вы не можете реализовать слушателя только в B
активность, потому что A
активность должна быть в состоянии показать фрагмент C
в ландшафте. Если вы беспокоитесь о дублировании кода, вы можете реализовать базовое действие, для которого вы реализуете обратный вызов для отображения фрагмента. C
и сделайте так, чтобы ваши два вида деятельности расширялись от этого базового класса.
Поскольку вы не опубликовали никакого реального кода о том, как вы управляете этими фрагментами, имейте в виду, что если вы находитесь в портретной ориентации (в B
фрагмент показа активности B
) и, нажав (или что вы делаете), вы заменяете фрагмент C
это не будет относиться к деятельности A
если вы переключите ориентацию в ландшафт.