[Java/Android] Chiarimento su Classi innestate anonime di Java per fare event listene
Ciao,
per un progetto universitario stò studiando Android che di fatto è Java e vorrei un chiarimento sull'uso delle classi innestate anonime di Java e del loro utilizzo.
Stavo studiando questo esempio che semplicemente gestisce 2 bottoni assegnandogli un listener con tale tecnica, ecco quì il codice (molto commentato):
codice:
package mieapplicazioni.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class TestActivity extends Activity {
// Richiamato non appena l'attività viene creata
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState); // Invoca il costruttore del supertipo
// Parte personale del metodo:
setContentView(R.layout.main); // Setta il layout prendendolo in /res/layout/main.xml
/* Richiama i bottoni: il metodo findViewById() ricerca nel layout caricato un componente
* avente l'ID specificato come argomento. A questo punto il bottone può essere caricato
* e manipolato */
Button bottone01 = (Button) findViewById(R.id.bottone01);
Button bottone02 = (Button) findViewById(R.id.bottone02);
bottone01.setOnClickListener(new OnClickListener(){ // Aggiungo un gestore d'eventto al bottone
@Override
public void onClick(View v) {
clickSuBottone01();
}
});
bottone02.setOnClickListener(new OnClickListener(){ // Aggiungo un gestore d'eventto al bottone
@Override
public void onClick(View v) {
clickSuBottone02();
}
});
}
// Gestisce l'evento del click sul bottone 1 stampando un messaggio
private void clickSuBottone01(){
Toast toast = Toast.makeText(this, "Hai cliccato il bottone 1!", Toast.LENGTH_SHORT);
toast.show();
}
// Gestisce l'evento del click sul bottone 2 stampando un messaggio
private void clickSuBottone02(){
Toast toast = Toast.makeText(this, "Hai cliccato il bottone 2!", Toast.LENGTH_SHORT);
toast.show();
}
}
Praticamente sulla guida che stò leggendo dice che questa tecnica di gestione fà risparmiare linee di codice e tempo rispetto a quella che consiste di far implementare alla classe attività le interfacce dei listener e che praticamente in questo caso si crea e si registra allo stesso tempo il gestore dell'evento di click e che poi ci pensa il compilatore a separare la classe anonima innestata su di un apposito file .class
Slo che non capisco esattamente cosa stà facendo...di fatto dov'è che stò usando queste benedette classi anonime innestate nel mio codice?
Grazie
Andrea