类型<type>中的方法调用(Activity)不适用于参数(new View.OnClickListener(){})

And*_*Eve 0 android

在黑暗中摸索......这次我在Eclipse中收到以下错误:

IntentsUtils类型中的方法调用(Activity)不适用于参数(new View.OnClickListener(){})

此错误是指连接到按钮的回调中的call()行,在扩展Activity的类中:

public class UnderstandingIntents extends Activity {
    ...
    ...
    ...
    // A call-back for when the user presses the testintents button.
    OnClickListener mTestIntentsListener = new OnClickListener() {
        public void onClick(View v) {
        IntentsUtils.call(this);
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

IntentsUtils是从列表3-33这里逐字复制的类.

这个错误是什么意思?

Hak*_*bay 5

这里的问题是你试图在Anonymous内部类中引用Activity类(UnderstandingIntents),因此当你说"this"时它引用了View.OnClickListener(){}

要更正此问题,请执行以下代码:

IntentsUtils.call(UnderstandingIntents.this); 
Run Code Online (Sandbox Code Playgroud)

这样,您的Activity类就会被引用.

  • 好文章!要回答你的问题,内部类并不一定意味着它是匿名的.它包含在外部类(Java文件)之外的类中是匿名的.通过语法,匿名内部类不使用关键字class,implements或extends(如您的问题所示).它的本质是它是一个只在方法中创建的类.然而,Inner类使用这些关键字来创建一个独立于方法的类.这里有一个很好的例子:http://download.oracle.com/javase/tutorial/java/javaOO/innerclasses.html (2认同)