为什么不能告诉编译器覆盖onClick

时间:2011-06-19 12:05:07

标签: java android

我正在制作一个Android应用程序,我有一些按钮。 我想为它们添加一些监听器,所以我实现了android.view.View.OnClickListener,并为按钮添加了监听器。

但是,在onClick方法中,我无法像这样添加Override注释:

@Override
public void onClick(View view) { /* With Override */ }

但这有效:

public void onClick(View view) { /* Without Override */ }

如果我尝试在后一种onClick方法中记录某些东西,它就会按预期工作。

我正在使用Eclipse,它一直告诉我必须覆盖超类方法。

如果我要覆盖它,为什么我不能添加Override注释呢?

我正在使用Ubuntu 11.4,如果这很重要的话。 java -version返回:

java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)

以下是代码:

import android.view.View.OnClickListener;

public class Main extends Activity implements OnClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button btnFoo = (Button) findViewById(R.id.btnFoo);
        btnFoo.setOnClickListener(this);
    }

    // @Override
    public void onClick(View v) {
        Log.e("foo", "bar");
    }
}

PS。我正在使用Sun JDK 1.6

修改

我发现这适用于我尝试使用的大部分方法,例如public void run()(来自Runnable)。

2 个答案:

答案 0 :(得分:2)

因为没有什么可以覆盖,所以你实现的接口不是从已经有该方法定义的超类继承子类。 这根本没有意义。

答案 1 :(得分:0)

您可以尝试将java sdk版本更改为1.6并将修复它

相关问题