this
spesso per fare riferimento al contesto corrente. Ma, in alcuni casi, perché dobbiamo utilizzare getBaseContext()
anziché this
. (Significa che quando si usa this
noterà un errore).Android: perché utilizzare getBaseContext() anziché questo
Ecco il mio esempio:
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?>arg0, View arg1, int arg2, long arg3){
Toast.makeText(getBaseContext(),"SELECTED", Toast.LENGTH_SHORT).show(); //this line
}
Al codice di cui sopra, quando cambio getBaseContext()
a this
riceverà errore.
Chi può spiegare per me, per favore.
Non utilizzare 'getBaseContext()' o 'getApplicationContext()' a meno che non si sappia ** esattamente e specificamente perché ** lo si sta utilizzando. I neofiti di Java dovrebbero dedicare del tempo ad imparare Java prima di entrare nella programmazione Android, quindi imparerai cose come 'OuterClass.this' e non sarai confuso quando ne incontrerai la necessità. – CommonsWare
@CommonsWare puoi darmi un buon collegamento per questo, per favore. (Sto solo conoscendo il diverso di 'getBaseContext()' e 'getApplicationContext' – hqt
http://c2.com/cgi/wiki?InnerClass e http://docs.oracle.com/javase/tutorial/java/javaOO /nested.html e http://juixe.com/techknow/index.php/2009/04/07/java-nested-inner-class-this/ e http://stackoverflow.com/questions/56974/keyword- for-the-outer-class-from-an-anonimo-inner-class – CommonsWare