2011-09-12 19 views
10

¿Hay alguna forma de acceder a la vista de un diseño desde una clase no derivada de la actividad? Estoy creando una clase de acordeón y necesito acceder a algunos de los elementos de la interfaz de usuario de la actividad. Paso en el contexto de la actividad al constructor de mi clase de acordeón, pero la API findViewById solo está disponible en la clase Activity. Tampoco quiero pasar un ejemplo de mi actividad, ya que parece estar mal visto debido a posibles pérdidas de memoria.Llamar a findViewById() desde fuera de una actividad

Respuesta

1

Pasé una instancia de una de las Vistas al constructor de la clase.

2

El contexto de la actividad es, de hecho, la clase Activity en sí. Suponiendo que este objeto viva dentro de una sola Actividad, debería ser seguro pasarle un objeto de tipo Actividad. De lo contrario, piense en reinventar su clase de Acordeón.

2

Aquí hay algo que podría ser útil.

Nunca he intentado algo como esto. Tampoco sé si no interrumpirá las pérdidas de memoria. Pero hace lo que le pediste :) "Llamar a findViewById() desde fuera de una actividad"

15

Estoy bastante seguro de que solo puede pasar una actividad como parámetro, p.

public void initSouthViews(Activity activity) { 
    for (int i = 0; i < southScores_.length; ++i) { 
     southScores_[i] = (EditText) activity.findViewById(10); 
    } 
} 
+0

Tienes razón. Funciona :) – boctulus

Cuestiones relacionadas