方法的参数之一Toast.makeText()
是上下文。
对于那个参数,我可以看到ActivityName.this
一些 Android 教科书中给出的值。
这不应该this.xxx
吗?
方法的参数之一Toast.makeText()
是上下文。
对于那个参数,我可以看到ActivityName.this
一些 Android 教科书中给出的值。
这不应该this.xxx
吗?
ActivityName.this
如果代码在嵌套类中,则获取对具有该名称的封闭类的对象的引用。例如,如果您在您Activity
的代码中编写此代码:
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
,所以这是一个错误。第二个是指 local YourActivity
,它是 anActivity
和 so a Context
,所以它可以工作。
并非总是如此,这取决于您在哪里创建 Toast。例如,如果您在单击侦听器的onClick
方法中创建 toast,则将是无法提供上下文的 Button。Button
this
并不真地。如果您在 的内部类中ActivityName
,则调用ActivityName.this
. 如果您不在内部类中,则只需调用this
. 关键是引用Activity
并使用它作为上下文。