Разработка нескольких фрагментов и действий

Добрый день, у меня есть три действия с их соответствующими фрагментами 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 и переходя к Activity A, когда в Ориентации Пейзажа, но я думаю, что это был закончен, прежде чем он даже должен был пройти из-за вышеуказанного кода.

Вы не можете реализовать слушателя только в действии B, потому что действие A должно показывать фрагмент C в альбомной ориентации. Если вы беспокоитесь о дублировании кода, вы можете реализовать базовую активность, для которой вы выполняете обратный вызов, чтобы показать фрагмент C и сделать ваши два действия расширенными из этого базового класса.

Поскольку вы не публиковали какой-либо реальный код о том, как вы управляете этими фрагментами, имейте в виду, что если вы находитесь в портретной ориентации (в B активности, показывающей фрагмент B), и нажав (или что угодно do) вы замените фрагмент на C, это не будет перенесено на активность A, если вы переключите ориентацию на пейзаж.