2013-08-09 71 views
12

W mojej aplikacji mam funkcję tabbar. W jednej zakładce wyświetlam dane serwera w lisview, a po kliknięciu na tę stronę szczegółów dla tego elementu lista zostanie otwarta w nowym fragmencie.Jak uniemożliwić wywołanie onCreateView po naciśnięciu przycisku Wstecz w fragmencie w Androidzie

Ale kiedy naciskam przycisk "Wstecz" na tej stronie szczegółów, za każdym razem, gdy wywoływana jest poprzednia strona, to za każdym razem, gdy listview jest tworzony, a nowy pobiera nowe dane serwera. A więc jak temu zapobiec i wyświetlać poprzedni stan po naciśnięciu przycisku Wstecz?

Odpowiedz

5

Nie sądzę, aby uniemożliwić wywoływanie naCreateView jest dobrym pomysłem, obok, jeśli funkcja nie jest wywoływana, będzie wyjątek, więc NIE, nie powinieneś. Zamiast tego, sugeruję przeniesienie "utworzonego listview i nowego pobierania nowych danych serwera" w inne miejsce, w którym można wyraźnie wywołać (kiedy chcesz, gdzie chcesz, onCreate() to dobre miejsce), nie umieszczaj go onCreateView(). Mam nadzieję że to pomoże.

-1

Powinieneś buforować obiekty danych oprócz zmiennych widoku, ponieważ ich odniesienia wymagają aktualizacji, jeśli pobierasz dane z serwera i nie chcesz ponownie wykonywać połączenia, a następnie użyj rozgałęzienia do rozgałęzienia tego kodu.

Utwórz metodę init(), w której wykonujesz wszystkie inicjalizacje i wywołania serwera i logicznie rozgłaszaj wywołanie metody init() za każdym razem, gdy nie chcesz wywoływać metody init().

31

Wiem, że to było zbyt długie, aby dać tę odpowiedź, ale domyślam się, że zastępujesz swój fragment innym. Chcę powiedzieć, jest używasz

ft.replace(R.id.realTabContent, fragment); 

przenieść się do innego fragmentu, który jest używany w onItemClick tak prostym rozwiązaniem jest użyć

ft.add(R.id.realTabContent, fragment); 

zamiast zastąpienie fragmentu.

Zrozum różnicę między zastąpić i dodać. To rozwiąże twój problem.

Wymienić: zastąpi oryginalny fragment i ponownie utworzyć widok, gdy wrócisz
Dodaj: to będzie po prostu dodać nowy fragment na stosie.

nadzieję, że pomoże komuś, kto stoi ten sam problem ...

+1

jeśli ustawimy 'Add' następnie nowy fragment pokrywają starą –

+0

To nie jest poprawne: docs powiedzieć, że * * będzie dodawać dodaj ten fragment do kontenera, nie dodawaj go do tylnego stosu. https://developer.android.com/reference/android/app/FragmentTransaction.html#add(int,%20android.app.Fragment,%20java.lang.String) – liucheia

Powiązane problemy