Android中的Toasts

时间:2013-09-26 07:50:40

标签: android

Toast.makeText()方法的一个参数是上下文。

对于该参数,我可以看到某些Android教科书中的值为ActivityName.this

这不应该是this.xxx吗?

3 个答案:

答案 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并将其用作上下文。