В example об использовании фрагментов в документах Android, когда приложение находится в режиме "dualview", фрагмент деталей воссоздан когда приложение должно показывать детали для другого заголовка. FragmentTransaction.replace()
используется для замены каждого экземпляра фрагмента старых деталей на новый.
Является ли это рекомендуемой практикой? Разве не расточительно создавать новый экземпляр пользовательского интерфейса, когда реальное намерение (не предназначенное для каламбура) - обновлять то, что показывает пользовательский интерфейс, а не сам пользовательский интерфейс. Мне кажется, единственная причина для создания новых экземпляров - если вы собираетесь добавить их в стопку, чтобы пользователь мог повторить шаги. В противном случае, безопасно/желательно обновить фрагмент напрямую?
В случае примера это будет означать метод вдоль строк DetailsFragment.setShownIndex()
. Это будет вызываться, переходя в новый индекс заголовка, вместо воссоздания DetailsFragment
.
Предположим, что у нас есть версия примера, в которой одно действие управляет обоими фрагментами, но только показывает один за раз, заменяя каждый фрагмент по мере необходимости. Было бы нормально, если бы активность создавала экземпляр каждого фрагмента, сохраняла ссылки на каждый, а затем просто добавляла или удаляла эти два экземпляра из себя по мере необходимости?
Одним из возможных последствий этого может быть то, что, когда фрагмент заголовков находится в состоянии resumed
(т.е. на "переднем плане" ), выбор заголовка приведет к вызову DetailsFragment.setShownIndex()
в то время, когда детали фрагмент находится в состоянии stopped
.
Хорошая идея? Плохая идея?
Спасибо заранее.