2010-08-18 7 views
22

Czy Android ma odpowiednik funkcji viewDidLoad i viewDidAppear firmy Cocoa?Widok AndroidaDidLoad i viewDidAppear odpowiednik

Jeśli nie, to w jaki sposób powinienem wykonać akcję po wyświetleniu widoku? Moja aplikacja to aplikacja z kartami, w której jedna z kart zawiera listę tematów na forum. Chciałbym, aby lista tematów była odświeżana za każdym razem, gdy pojawi się widok. Czy to możliwe w Androidzie?

+0

Doskonałe stare pytanie! Może to być pomocne tutaj: http://stackoverflow.com/a/40789869/294884 – Fattie

Odpowiedz

11

Klasa aktywności ma metody onCreate i onResume, które są dość analagiczne do viewDidLoad i viewDidAppear.

Activity.onResume

EDIT

Aby dodać do tego, ponieważ niektóre z nich wspomniano w komentarzach, że drzewo widok nie jest jeszcze w pełni dostępny w ciągu tych wywołań zwrotnych, jest ViewTreeObserver że można słuchać jeśli potrzebujesz pierwszego dostępu do hierarchii widoku. Oto przykład, w jaki sposób można wykorzystać ViewTreeObserver, aby to osiągnąć.

View someView = findViewById(R.id.someView); 
    final ViewTreeObserver obs = someView.getViewTreeObserver(); 
    obs.addOnPreDrawListener(new OnPreDrawListener() { 

     public boolean onPreDraw() { 
      obs.removeOnPreDrawListener(this); 
      doMyCustomLogic(); 
      return true; 
     } 
    }); 
+0

onCreate nie jest podobne do viewDidLoad, ponieważ w viewDidLoad wszystkie widoki z xml/xib są tworzone i dostępne, ale w onCreate widoki nie są jeszcze dostępne . – Jonny

+0

Dowiedziałem się, że 'findViewById' może być używane wewnątrz' onCreate' po wywołaniu 'setContentView'. – Jonny

+0

w ogóle nie ..... – Jacky

3

Z mojego ograniczonego, rodzącym zrozumienia Android, wdrożyć viewDidLoad funkcjonalność typu w sposobie swojej ActivityonCreate:

onCreate (Bundle) gdzie zainicjować swoją aktywność. Większość ważniejsze, tutaj będzie zazwyczaj połączeń setContentView (int) z układem zasób definiowania UI i używając findViewById (int) do pobierania widżety w tym interfejsie, że trzeba interakcję z programowo.

Ekwiwalent dla viewDidAppear jest bliżej do sposobu onResume:

wywoływana po onRestoreInstanceState (Bundle) onRestart() lub OnPause(), dla swojej działalności rozpocząć interakcję z użytkownikiem . Jest to dobre miejsce, aby rozpocząć animacje, otwarty ekskluzywny dostępu urządzenia (takie jak aparat fotograficzny), itp

12

onResume() jest bardziej jak viewCouldAppear. :) public void onWindowFocusChanged (boolean) jest najbliżej viewDidAppear. W tym momencie cyklu życia aktywności możesz zapytać o jego rozmiar.

Powiązane problemy