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

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

Другие вопросы по тегам