-4

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

对于那个参数,我可以看到ActivityName.this一些 Android 教科书中给出的值。

这不应该this.xxx吗?

4

3 回答 3

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,所以这是一个错误。第二个是指 local YourActivity,它是 anActivity和 so a Context,所以它可以工作。

于 2013-09-26T07:57:15.687 回答
1

并非总是如此,这取决于您在哪里创建 Toast。例如,如果您在单击侦听器的onClick方法中创建 toast,则将是无法提供上下文的 Button。Buttonthis

于 2013-09-26T07:54:01.333 回答
0

并不真地。如果您在 的内部类中ActivityName,则调用ActivityName.this. 如果您不在内部类中,则只需调用this. 关键是引用Activity并使用它作为上下文。

于 2013-09-26T07:55:21.497 回答