Toast.makeText()
方法的一个参数是上下文。
对于该参数,我可以看到某些Android教科书中的值为ActivityName.this
。
这不应该是this.xxx
吗?
答案 0 :(得分:1)
并非总是如此,这取决于您创建Toast的位置。例如,如果您在onClick
点击监听器的Button
方法中创建Toast,this
将是Button,它无法提供上下文。
答案 1 :(得分:1)
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
,所以这是一个错误。第二个引用了本地YourActivity
,即Activity
,因此它是Context
,因此可以使用。
答案 2 :(得分:0)
不是真的。如果您在ActivityName
的内部班级中,则拨打ActivityName.this
。如果您不在内班,只需致电this
。
重点是引用Activity
并将其用作上下文。