2010-06-30 7 views

Répondre

1

Sachant que onDestroy n'est pas garanti d'être appelé, vous pouvez simplement rappeler votre vue dans la méthode des activités onDestroy.

Editer en réponse au commentaire: Vous pouvez obtenir n'importe quelle vue en lui donnant un identifiant dans la mise en page et en appelant findViewById. Voici un exemple:

layout.xml (ne montrant que le strict minimum)

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

MyActivity.java (encore une fois, les importations nues propres minimales et à supposer que)

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

Pouvez-vous élaborer un peu à ce sujet. Ma classe de vue personnalisée fait partie d'un package distinct et cette vue est définie dans la présentation xml. Il n'est donc pas possible d'invoquer quelque chose de la classe d'activité. – bhups

+2

"Il n'est donc pas possible d'invoquer quelque chose de la classe d'activité." Bien sûr que ça l'est. Appelez 'findViewById()', récupérez le widget, déposez-le dans la classe appropriée et appelez une méthode dessus. Cela étant dit, 'onDetachedFromWindow()' semble être un choix raisonnable pour moi. – CommonsWare

+0

@CommonsWare vous commentez plus vite que je peux éditer. :) BTW, merci pour tout le travail que vous faites. Vos livres/code/réponses ont été inestimables pour moi. –

6

Si vous souhaitez obtenir un rappel sans avoir à surcharger la méthode View.onDetachedFromWindow(), vous pouvez utiliser la méthode View.addOnAttachStateChangeListener(), qui prend un écouteur de rappel en tant que paramètre unique.

+1

uniquement pour API> 12 –