this
часто ссылаться на текущий контекст. Но в каком-то случае мы должны использовать getBaseContext()
вместо this
. (Это означает, что при использовании this
заметят ошибку).Android: зачем использовать getBaseContext() вместо этого
Вот мой пример:
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
}
В коде выше, когда я изменяю getBaseContext()
к this
получит сообщение об ошибке.
Кто может объяснить мне, пожалуйста.
Не используйте 'getBaseContext()' или 'getApplicationContext()', если вы точно не знаете, и конкретно почему ** вы его используете. Новички на Java должны потратить время на изучение Java, прежде чем попасть в Android-программирование, поэтому вы узнаете о таких вещах, как «OuterClass.this», и не путайте их, когда вы столкнулись с необходимостью для них. – CommonsWare
@CommonsWare, можете ли вы дать мне хорошую ссылку для этого, пожалуйста. (Я просто знаю разные 'getBaseContext()' и 'getApplicationContext' – hqt
http://c2.com/cgi/wiki?InnerClass и http://docs.oracle.com/javase/tutorial/java/javaOO /nested.html и http://juixe.com/techknow/index.php/2009/04/07/java-nested-inner-class-this/ и http://stackoverflow.com/questions/56974/keyword- for-the-external-class-from-an-anonymous-internal-class – CommonsWare