Одним из параметров для метода Toast.makeText()
является контекст.Тосты в Android
И для этого параметра, я вижу, что значение дано как ActivityName.this
в некоторых учебниках для Android.
Не должно быть this.xxx
?
Одним из параметров для метода Toast.makeText()
является контекст.Тосты в Android
И для этого параметра, я вижу, что значение дано как ActivityName.this
в некоторых учебниках для Android.
Не должно быть this.xxx
?
Не всегда, это зависит от того, где вы создаете тост. Если, например, вы создаете тост в методе onClick
для прослушивателя кликов Button
, this
будет Button, который не может предоставить контекст.
вы не можете использовать 'this' в прослушивателе кликов только в том случае, если это анонимный класс. Существует несколько способов реализации прослушивателя. Один из способов - объявить' android: onClick = "щелкнуть" атрибут к кнопке XML и объявить метод 'click (View v) {// выполнить задачу}' .. В этом случае слушатель не является анонимным классом –
Это был всего лишь возможный пример, объясняющий, почему вы не всегда может использовать это как контекст. Я не собирался делать лекции об этом. – fasteque
Успокойся. Просто упомянутый клик-слушатель, поэтому я указал на это. –
Не совсем. Если вы находитесь внутри внутреннего класса ActivityName
, вы вызываете ActivityName.this
. Если вы не во внутреннем классе, вы просто вызываете this
. Дело в том, чтобы обратиться к Activity
и использовать его в качестве контекста.
ActivityName.this
получает ссылку на объект охватывающего класса с этим именем, если код находится в вложенном классе. Например, если вы пишете этот код внутри кода Activity
«s:
public void onCreate(Bundle bundle) {
// ...
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() { // An anonymous nested class
@Override
public void onClick(View v) {
Toast.makeText(this, "Example", Toast.LENGTH_SHORT);
// This one causes an error; this is not a Context
Toast.makeText(YourActivity.this, "Example", Toast.LENGTH_SHORT);
// This one works
}
});
}
Первый this
теперь ссылается на объект типа OnClickListener
. Это не Context
, так что это ошибка. Второй относится к локальному YourActivity
, который является Activity
и поэтому Context
, поэтому он работает.
Как вы сравнили 'ActivityName.this' и' this.xxx'? 'this.xxx' всегда будет ссылаться на элемент класса не сам. –
u говорят 'this' или' this.xxx' –