2013-01-31 9 views
7

PowodemTworzenie i używanie fragment widoku choć nie widoczne dla użytkownika

muszę to zrobić, ponieważ chcę, aby uzyskać rozciągliwej cache widzenia fragment, a następnie stworzyć bitmapę z tym poglądem. Ta mapa bitowa będzie następnie używana do publikowania na Facebooku.

Problem

Kiedy tworzę poglądy mojego fragment nie są tworzone, ponieważ nie zostały dodane przez fragment transakcję i ponieważ widok na zawierają one nie są widoczne dla użytkownika.

Nie chcę też narysować tych widoków ręcznie, ponieważ nie otrzymam dokładnej repliki ekranu.

Moje pytanie

Czy istnieje sposób, aby mieć pełną funkcjonalność (taką samą funkcjonalność jak gdybyś go dodać za pomocą FragmentTransaction) fragmentu bez fragmentu rzeczywistości pokazano?

Potrzebuję mieć dostęp do widoku fragmentu, gdy nie jest on widoczny.

Dzięki z góry

+0

Dlaczego chcesz uzyskać bitmapę widoku fragmentu przed dodaniem go do widocznego ekranu? – Luksprog

+0

Chcę tego widoku, ponieważ chcę, aby jego wyświetlenie przekształciło go w bitmapę, którą następnie można przesłać na Facebooka. – StuStirling

+0

Rozumiałem, że pytanie było ** dlaczego ** potrzeba utworzenia tej mapy bitowej ** przed ** użytkownikiem zobaczy to (co, jak przypuszczam, stanie się w późniejszym momencie, gdy dodasz fragment do układu)? – Luksprog

Odpowiedz

1

Czy odpowiedź dałem here zastosowanie również do sytuacji zbyt? Zasadniczo używa różnych metod FragmentTransaction.

+0

niestety nie. W każdym razie dzięki! – StuStirling

+0

Moja wskazówka na to, że tworzy Fragment w kodzie, a następnie ustawia jego widoczność za pomocą show() lub hide(). W ten sposób masz dostęp do Frgamentu, ale nie jesteś widoczny dla użytkownika. – Kerry

1

Czy jest jakiś sposób, aby po prostu dodać swoje Fragmenty do ukrytego układu? Przykład 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" /> 

Następnie w kodzie:

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

Myślę, że w przypadku, gdy grupa podglądu nadrzędnego ma widoczność = minęła, onCreateView fragmentu nigdy nie zostanie wywołany. – Tapemaster

3

Kolejne adresy pytanie, jak render activities into offscreen buffers. Możesz użyć tej techniki do renderowania fragmentu do bufora poza ekranem.

Technika ta polega na:

  • rozpoczęcie nowej działalności z startActivityForResult() zamiast startActivity()
  • konfiguracji cache rysunek
  • użycie getDrawingBitmap() raz układ jest wykończone
1

Próbowałbym uniknąć przechwytywania Bitmap z View i zamiast tego uzyskać inny sposób. Następnie możesz wykonać dowolne przetwarzanie potrzebne w metodzie onAttach() fragmentu, które zostanie wywołane podczas tworzenia fragmentu w jego aktywności nadrzędnej i robi to zanim będzie widoczne.

+0

Więc sam muszę to narysować? – StuStirling

+0

Widoki fragmentu nie są tworzone aż do metody onCreateView(). Więc jeśli chcesz uzyskać bitmapę z widoku fragmentu, mapa bitowa musi pochodzić skądś, zanim zostanie umieszczona w ImageView. Mówię, rób to, "pobierając/przetwarzając bitmap skądś" w metodzie onAttach(), abyś mógł ją uzyskać, zanim widok fragmentu zostanie zawyżony. – Wenger

Powiązane problemy