2010-06-30 12 views

risposta

1

Con la consapevolezza che onDestroy non è garantito per essere chiamato, è possibile richiamare semplicemente la visualizzazione nelle attività sul metodo onDestroy.

Modifica in risposta al commento: È possibile ottenere qualsiasi vista dandogli un id nel layout e chiamando findViewById. Ecco un esempio:

layout.xml (che mostra solo il minimo indispensabile)

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

MyActivity.java (di nuovo, nudi minimi e assumendo le importazioni propri)

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

Potete approfondire un po 'su questo. La mia classe di visualizzazione personalizzata fa parte di un pacchetto separato e questa vista è definita nel layout xml. Quindi invocare qualcosa in vista dalla classe di attività non è fattibile. – bhups

+2

"Quindi invocare qualcosa in vista dalla classe di attività non è fattibile." Certo che lo e. Chiama 'findViewById()', ottieni il widget, lo lanci nella classe appropriata e chiama un metodo su di esso. Detto questo, 'onDetachedFromWindow()' mi sembra una scelta ragionevole. – CommonsWare

+0

@CommonsWe commentate più velocemente di quanto possa essere modificato. :) A proposito, grazie per tutto il lavoro che fai. I tuoi libri/codice/risposte sono stati inestimabili per me. –

6

Se si desidera ottenere un callback senza dover sovraccaricare il metodo View.onDetachedFromWindow(), è possibile utilizzare il metodo View.addOnAttachStateChangeListener(), che accetta un listener di callback come un singolo parametro.

+1

solo per API> 12 –

Problemi correlati