2010-08-18 23 views
22

¿Android tiene un equivalente a las funciones viewDidLoad y viewDidAppear de Cocoa?ViewDidLoad de Android y su equivalente viewDidAppear

Si no es así, ¿cómo realizar una acción cuando aparece una vista? Mi aplicación es una aplicación con pestañas, en la que una de las pestañas es una lista de temas del foro. Me gustaría que la lista de temas se actualice cada vez que aparezca la vista. ¿Es eso posible en Android?

+0

¡Una excelente pregunta anterior! Esto puede ser útil aquí: http://stackoverflow.com/a/40789869/294884 – Fattie

Respuesta

11

La clase de actividad tiene métodos onCreate y onResume que son bastante análogos a viewDidLoad y viewDidAppear.

Activity.onResume

EDITAR

Para añadir a esto, ya que algunos han mencionado en los comentarios que el árbol de vista aún no está totalmente disponible durante estas devoluciones de llamada, no es el ViewTreeObserver que se puede escuchar si necesita acceder primero a la jerarquía de vista. Aquí hay una muestra de cómo puede usar ViewTreeObserver para lograr esto.

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 no es como viewDidLoad, porque en viewDidLoad todas las vistas de xml/xib se crean y son accesibles, pero en onCreate las vistas aún no están accesibles . – Jonny

+0

Descubrí que 'findViewById' se puede usar dentro de' onCreate' después de llamar a 'setContentView'. – Jonny

+0

en absoluto ..... – Jacky

3

Desde mi limitada comprensión, naciente de Android, se implementa la funcionalidad viewDidLoad tipo en el método de su ActivityonCreate:

onCreate (Bundle) es donde se funcionar su actividad. La mayoría importante, aquí lo normal es que setContentView llamada (int) con la definición de un recurso diseño la interfaz de usuario, y el uso de findViewById (int) para recuperar los widgets en que la interfaz de usuario que tiene que interactuar con mediante programación.

El equivalente para viewDidAppear está más cerca del onResume método:

Llamado después onRestoreInstanceState (Bundle), onRestart(), o onPause(), para su actividad a empezar a interactuar con el usuario . Este es un buen lugar para comenzar animaciones, abierta de acceso exclusivo dispositivos (como la cámara), etc.

12

onResume() es más como viewCouldAppear. :) public void onWindowFocusChanged (boolean) es lo más cercano a viewDidAppear. En este punto dentro del ciclo de vida de la actividad, puede preguntar la vista sobre su tamaño.

Cuestiones relacionadas