我的程序出了问题。
这是错误:
The type MainActivity must implement the inherited abstract method View.OnClickListener.onClick(View)
以下是代码:
import android.os.Bundle;
import android.app.Activity;
import android.view.View.OnClickListener;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements OnInitListener, OnClickListener {
private TextToSpeech tts;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts = new TextToSpeech(this, this);
}
public void OnClick (View view){
EditText et = (EditText) findViewById (R.id.editText1);
tts.speak(et.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}
public void onInit (int status){
Button button = (Button) findViewById (R.id.button1);
button.setOnClickListener(this);
tts.setLanguage(Locale.GERMAN);
tts.setSpeechRate(1);
}
}
我刚开始使用eclipse
编程,我真的是初学者。
那么我该怎么办才能解决这个问题?
答案 0 :(得分:2)
The type MainActivity must implement the inherited abstract method View.OnClickListener.onClick(View)
您需要实施onClick(View)
。由于没有实现,您会收到错误。
所以改为
@Override
public void onClick (View view){ //OnClick You has O in caps
EditText et = (EditText) findViewById (R.id.editText1);
tts.speak(et.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}
添加覆盖注释并将OnClick
更改为onClick
。
答案 1 :(得分:1)
请清理您的项目并重新构建
您必须实现OnClickListener接口提供的所有方法。 当您在活动中实现onClickListener时,您的onclick方法应该被覆盖,如
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EditText et = (EditText) findViewById (R.id.editText1);
tts.speak(et.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}
答案 2 :(得分:1)
OnClickListener
是一个界面。您必须实现此接口提供的所有方法。
我认为这就是你想要做的事情:
public void OnClick (View view){
EditText et = (EditText) findViewById (R.id.editText1);
tts.speak(et.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}
但这不是正确的签名,应该是:
@Override
public void onClick (View view){ //note the 'o'
EditText et = (EditText) findViewById (R.id.editText1);
tts.speak(et.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}
请注意,adding @Override
注释不是必需的,但它有助于防止错误。如果标有@Override
的方法无法正确覆盖其某个超类中的方法,则编译器会生成错误。
答案 3 :(得分:1)
你几乎拥有它!只需将方法的名称更改为onClick
,以便它实现OnClickListener接口指定的onclick
方法。
当一个类实现一个接口时,它必须为接口上列出的每个方法提供一个实现。类实现必须与接口上指定的签名(名称,参数,返回类型)匹配。
public void onClick (View view){
EditText et = (EditText) findViewById (R.id.editText1);
tts.speak(et.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}