无法实例化View.OnClickListener类型的Java错误

时间:2014-02-17 14:35:33

标签: android syntax syntax-error

我正在创建一个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语法,术语等时请解释它们。

4 个答案:

答案 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);
        };
    });