2010-06-30 15 views

Respuesta

1

Entendiendo que no se garantiza que se llame a onDestroy, puede hacer una devolución de llamada a su vista en las actividades del método Destroy.

Editar en respuesta al comentario: Puede obtener cualquier vista dándole un id en el diseño y llamando a findViewById. He aquí un ejemplo:

layout.xml (sólo mostrando el mínimo)

<LinearLayout> 
    <com.example.superwidget.DropDownTouchEnabledListView 
    android:id="@+id/special_list_view" /> 
</LinearLayout> 

MyActivity.java (de nuevo, desnudos importaciones mínimas adecuadas y asumiendo)

@Override 
void onDestroy() { 
    DownTouchEnabledListView v = (DownTouchEnabledListView)findViewById(R.id.special_list_view); 
    v.doCallback(with, parameters); 
} 
+0

Puede elaborar un poco sobre esto. Mi clase de vista personalizada es parte de un paquete separado y esta vista se define en el diseño xml. Por lo tanto, invocar algo a la vista desde la clase de actividad no es factible. – bhups

+2

"Por lo tanto, no es posible invocar algo a la vista desde la clase de actividad". Claro que lo es. Llamar a 'findViewById()', obtener el widget, convertirlo a la clase apropiada y llamar a un método en él. Dicho esto, 'onDetachedFromWindow()' me parece una opción razonable. – CommonsWare

+0

@CommonsWare usted comenta más rápido de lo que puedo editar. :) Por cierto, gracias por todo el trabajo que haces. Sus libros/código/respuestas han sido invaluables para mí. –

6

Si desea obtener una devolución de llamada sin tener que sobrecargar el método View.onDetachedFromWindow(), puede usar el método View.addOnAttachStateChangeListener(), que toma una escucha de devolución de llamada como un parámetro único.

+1

solo para API> 12 –

Cuestiones relacionadas