this
a menudo para hacer referencia al contexto actual. Pero, en algún caso, por qué debemos usar getBaseContext()
en lugar de this
. (Significa que cuando use this
notará un error).Android: por qué debe usar getBaseContext() en lugar de este
Aquí está mi ejemplo:
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
}
En el código anterior, cuando cambio getBaseContext()
a this
recibirá error.
Quién puede explicarme, por favor.
No use 'getBaseContext()' o 'getApplicationContext()' a menos que sepa ** exacta y específicamente por qué ** lo está usando. Los recién llegados a Java deberían dedicar un tiempo a aprender Java antes de ingresar a la programación de Android, por lo que aprenderás sobre cosas como 'OuterClass.this' y no te confundas cuando encuentres la necesidad de ellos. – CommonsWare
@CommonsWare me puede dar un buen enlace para esto, por favor. (Solo sé lo diferente de 'getBaseContext()' y 'getApplicationContext' – hqt
http://c2.com/cgi/wiki?InnerClass y http://docs.oracle.com/javase/tutorial/java/javaOO /nested.html y http://juixe.com/techknow/index.php/2009/04/07/java-nested-inner-class-this/ y http://stackoverflow.com/questions/56974/keyword- for-the-outer-class-from-an-anonymous-inner-class – CommonsWare