我正在创建一个Android应用,在我上一个问题(Android app not able to open web link)之后,我在Eclipse中遇到了这个语法错误:
Cannot instantiate the type View.OnClickListener
我的代码如下:
package com.example.ldsm3;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.method.MovementMethod;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Finished extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_finished);
// tv is the ID for the TextView in the XML file
TextView tv = (TextView) findViewById(R.id.textView2);
// set the TextView to show the score
tv.setText(Misc.correct + "/" + Misc.total);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new Button.OnClickListener());
}
public void onClick(View v)
{
// Open up the system's default browser to whackamole.ajav-games.tk, where the Whack A Mole game is.
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://whackamole.ajav-games.tk"));
startActivity(browserIntent);
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.finished, menu);
return true;
}
}
我该如何解决这个问题?我知道这可能是一个简单的Java错误,但我之前没有使用过Java,并且在提到Java语法,术语等时请解释它们。
答案 0 :(得分:3)
更改
button1.setOnClickListener(new Button.OnClickListener());
到
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
}
});
并导入android.view.View.OnClickListener
然后在onClick
onClickListener
中执行您想要执行的操作
答案 1 :(得分:2)
更改为
public class Finished extends Activity implements View.OnClickListener
OnClickListener
是一个接口,您的类实现了接口
并且
button1.setOnClickListener(this);
因为你已经
了 public void onClick(View v)
并确保您拥有正确的导入
import android.view.View.OnClickListener;
或使用内部类。 Annomymous内部类实现接口
http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://whackamole.ajav-games.tk"));
startActivity(browserIntent);
}
});
答案 2 :(得分:2)
new Button.OnClickListener()
不是这应该如何工作。 OnClickListener
是一个接口,因此您必须在类中实现它并将该类作为参数传递。
您似乎已在Activity
中实施了该方法,因此:
implements View.OnClickListener
添加到您的Activity
声明将OnCLickListener
设置为Activity
:
button1.setOnClickListener(this);
答案 3 :(得分:0)
尝试这样取代button1.setOnClickListener(new Button.OnClickListener());
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO your code
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://whackamole.ajav-games.tk"));
startActivity(browserIntent);
};
});