Правильный способ взаимодействия между фрагментами и замена фрагмента новым в одном приложении активности - PullRequest
0 голосов
/ 08 июля 2020

Предположим, у нас есть одно приложение для занятий. Макет содержит один FrameLayout. Действие имеет метод replaceFragment, который принимает фрагмент и заменяет фрагмент, если он есть в FrameLayout, например:

Метод в действии:

replaceFragment(Fragment fragment)
{
    getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout, fragment).commit;
}

Затем из любого фрагмента мы может вызвать этот метод, чтобы заменить себя новым фрагментом, а также передать данные в этот новый фрагмент следующим образом:

((MainActivity) getActivity()).replaceFragment(AnotherFragment.newInstance("data", "data"));

Я хочу знать, что многие люди говорят, что приложение Single activity хорошо, но сложно сделать. Но из того, что я вижу, это кажется простым. Я что-то упускаю, что-то не так с такой архитектурой, о которой я не знаю? Очевидно, это всего лишь пример, нам понадобится еще несколько методов.

1 Ответ

1 голос
/ 08 июля 2020

У приложения с одним действием есть свои плюсы и минусы, и я думаю, что основным недостатком является сложность, особенно когда приложение большое и сложное. иметь разные типы экранов, такие как bottomNavigtaionBar, drawerLayout, одна настраиваемая панель действий для домашнего экрана, а другая - для других, полноэкранные, такие как экраны входа, регистрации или приветствия.

Но в техническом мире нет ничего невозможного, если есть достаточно времени, ресурс и умение. Хотя вы можете делать все это вручную самостоятельно, я бы предпочел использовать некоторые библиотеки, поскольку сейчас 2020 год, и многие библиотеки уже стали стабильными.

Я бы порекомендовал Навигационный компонент from jack pack для управления фрагментами, потому что он официально поддерживается Google, и он действительно мощный, поддерживается студией android и имеет лишь некоторые незначительные недостатки. Для связи между фрагментами я бы порекомендовал LiveData и viewModel , поскольку эти два действительно хорошо работают с приложением с одним действием и значительно упростят разработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...