Android Button onClick监听器错误?

时间:2013-10-06 13:00:48

标签: android

我有以下代码:

onCreate方法中的

{
saveClick = (Button) findViewById(R.id.saveBtn);
        saveClick.setOnClickListener(this);
}

@Override
    public void onClick(View v) { 
        //------------ take input data and save in DB --------------------
        String cpassword;
        EditText num_1=(EditText)findViewById(R.id.num1);
        EditText num_2=(EditText)findViewById(R.id.passkey1);
        EditText num_3=(EditText)findViewById(R.id.passkey2);
        number=num_1.getText().toString();
        password=num_2.getText().toString();
        cpassword=num_3.getText().toString();

        DBoperation db=DBoperation.getInstance(getApplicationContext());
        if(password == cpassword)
        {
            TelephonyManager tMgr =(TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
            pnumber = tMgr.getLine1Number();
            db.addSIMSs(pnumber);
            db.addSIMSs(number);
            db.addPassKey(password);
        }
    }

我正在使用eclipse进行开发,并且它一直出现以下错误: at line:saveClick.setOnClickListener(this);
错误:
类型视图中的方法setOnClickListener(View.setOnClickListener)不适用于参数。

也在行:public void onClick(查看v){
错误:
MainActivity类型的onClick(View)方法必须覆盖或实现超类型方法。

以下是XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="113dp"
        android:text="TextView" />

    <EditText
        android:id="@+id/num1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="38dp"
        android:layout_marginTop="37dp"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/passkey1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/num1"
        android:layout_below="@+id/num1"
        android:layout_marginTop="86dp"
        android:ems="10"
        android:inputType="textPassword" />

    <EditText
        android:id="@+id/passkey2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/passkey1"
        android:layout_below="@+id/passkey1"
        android:layout_marginTop="49dp"
        android:ems="10"
        android:inputType="textPassword" />

    <TextView
        android:id="@+id/pass1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/passkey1"
        android:layout_alignLeft="@+id/textView2"
        android:layout_marginBottom="35dp"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/pass2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView3"
        android:layout_alignTop="@+id/passkey2"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/pass1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="24dp"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <Button
        android:id="@+id/saveBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/passkey2"
        android:layout_marginLeft="14dp"
        android:layout_marginTop="41dp"
        android:text="@string/save" />

</RelativeLayout>

6 个答案:

答案 0 :(得分:4)

您是否已将OnClicklistener实施到您的活动中?

public class MainActivity extends Activity implements OnClickListener {

答案 1 :(得分:0)

在这一行.-

saveClick.setOnClickListener(this);

我猜thisActivity的一个实例,它应该是OnClickListener。尝试这样的事情.-

saveClick.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        // Do your stuff here    
    }
});

对于第二个错误,编译器抱怨您尝试覆盖onClick中的方法Activity,但其父级未实现该方法。只需从onClick中删除Activity方法,然后将该逻辑移至侦听器onClick方法。

答案 2 :(得分:0)

您必须在班级初始化中实施OnCLickListener。那是 public class MyClass extends Activity implements View.OnCLickListener

答案 3 :(得分:0)

使用它,它会起作用。

saveClick = (Button) findViewById(R.id.saveBtn);
saveClick.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                String cpassword;
        EditText num_1=(EditText)findViewById(R.id.num1);
        EditText num_2=(EditText)findViewById(R.id.passkey1);
        EditText num_3=(EditText)findViewById(R.id.passkey2);
        number=num_1.getText().toString();
        password=num_2.getText().toString();
        cpassword=num_3.getText().toString();

        DBoperation db=DBoperation.getInstance(getApplicationContext());
        if(password == cpassword)
        {
            TelephonyManager tMgr =(TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
            pnumber = tMgr.getLine1Number();
            db.addSIMSs(pnumber);
            db.addSIMSs(number);
            db.addPassKey(password);
        }
     }
 });

答案 4 :(得分:0)

我认为您在导入onclicklistner库时会遇到问题;这似乎你已经完成了

public class MainActivity extends Activity implements OnClickListener 

为什么不试试

saveClick.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        // Do your stuff here    
    }
});

而不是

saveClick.setOnClickListener(this);

这将帮助您进一步调试

答案 5 :(得分:0)

将此添加到您的onClick

if (v.getId() == R.id.saveBtn) {

    //your code
        String cpassword;
                EditText num_1=(EditText)findViewById(R.id.num1);
                EditText num_2=(EditText)findViewById(R.id.passkey1);
                EditText num_3=(EditText)findViewById(R.id.passkey2);
                number=num_1.getText().toString();
                password=num_2.getText().toString();
                cpassword=num_3.getText().toString();

                DBoperation db=DBoperation.getInstance(getApplicationContext());
                if(password == cpassword)
                {
                    TelephonyManager tMgr =(TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
                    pnumber = tMgr.getLine1Number();
                    db.addSIMSs(pnumber);
                    db.addSIMSs(number);
                    db.addPassKey(password);
                }

}