Причина
Мне нужно сделать это, потому что я хочу получить доступный кэш представления фрагмента, а затем создать Bitmap из этого представления. Этот Bitmap будет использоваться для публикации в Facebook.
Проблема
Когда я создаю свой фрагмент, представления не создаются, потому что они не были добавлены через транзакцию фрагментов и потому, что их содержимое не отображается пользователю.
Я также не хочу рисовать эти представления вручную, так как я не получу точную копию экрана.
Мой вопрос
Есть ли способ иметь полную функциональность (такую же функциональность, как если бы вы добавляли ее через FragmentTransaction) Фрагмента без фактического отображения фрагмента?
Мне нужно иметь доступ к просмотру фрагмента, когда он не отображается.
Заранее спасибо
В другом вопросе рассматривается вопрос о том, как отображать действия в оффшорных буферах . Вы можете использовать этот метод для рендеринга фрагмента в буфер вне экрана.
Этот метод включает:
Является ли ответ, который я дал здесь, также относится и к вашей ситуации? В основном он использует разные методы 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()
экземпляра фрагмента в его родительской активности, и он делает это до его видимости.