为什么我不允许在这种情况下使用 setOnClickListener?

Why am I not allowed to use setOnClickListener in this situation?

这没有意义,我收到一条错误消息,提示无法将 setOnClickListener 应用于 MainActivity。但我做过其他项目,但我从未遇到过这个问题。怎么回事?

public class MainActivity extends ActionBarActivity {

Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    button = ((Button) findViewById(R.id.button));

    button.setOnClickListener(this);

}

您必须像这样声明 MainActivity:

public class MainActivity extends ActionBarActivity implements View.OnClickListener

然后你必须重写 MainActivity 中的 onClick 方法

@Override
public void onClick(View v) {
     //do something...
} 

正如我们所见,您尚未在 Main activity 上实施 View.OnClickListenerthis会被当作MainActivity使用但是可以传递的参数是OnClickListener

旁注:在使用之前始终尝试进行类型转换,这会大大减少复杂性,有时会让您犯错误。