Создание и использование представления фрагмента, хотя и не видимого для пользователя

Причина

Мне нужно сделать это, потому что я хочу получить доступный кэш представления фрагмента, а затем создать Bitmap из этого представления. Этот Bitmap будет использоваться для публикации в Facebook.

Проблема

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

Я также не хочу рисовать эти представления вручную, так как я не получу точную копию экрана.

Мой вопрос

Есть ли способ иметь полную функциональность (такую ​​же функциональность, как если бы вы добавляли ее через FragmentTransaction) Фрагмента без фактического отображения фрагмента?

Мне нужно иметь доступ к просмотру фрагмента, когда он не отображается.

Заранее спасибо

Solutions Collecting From Web of "Создание и использование представления фрагмента, хотя и не видимого для пользователя"

В другом вопросе рассматривается вопрос о том, как отображать действия в оффшорных буферах . Вы можете использовать этот метод для рендеринга фрагмента в буфер вне экрана.

Этот метод включает:

  • Запуск новой активности с помощью startActivityForResult () вместо startActivity ()
  • Настроить кеш чертежа
  • Используйте getDrawingBitmap () после завершения макета

Является ли ответ, который я дал здесь, также относится и к вашей ситуации? В основном он использует разные методы FragmentTransaction.

Есть ли способ, которым вы можете просто добавить свои фрагменты в скрытый макет? Пример XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/GoneFragmentContainer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:visibility="gone" /> 

Затем в вашем коде:

 MyFragment myFragment = new MyFragment(); getSupportFragmentManager().beginTransaction() .add(R.id.GoneFragmentContainer, myFragment) .commit(); myFragment.getView().callMethodsOnMyNonVisibleFragment(); 

Я попытался бы избежать захвата Bitmap из представления и вместо этого получить его другим способом. Затем вы можете сделать любую обработку, которая вам нужна в onAttach() для фрагмента, который onAttach() при onAttach() экземпляра фрагмента в его родительской активности, и он делает это до его видимости.