1

我有以下代码:

在 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 进行开发,它不断给出以下错误: 在 line:saveClick.setOnClickListener(this);
错误:
类型视图中的方法 setOnClickListener(View.setOnClickListener) 不适用于参数。

同样在 line:public void onClick(View 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>
4

6 回答 6

4

您是否在 Activity 中实现了 OnClicklistener?

public class MainActivity extends Activity implements OnClickListener {
于 2013-10-06T13:02:02.983 回答
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方法。

于 2013-10-06T13:05:15.543 回答
0

你必须OnCLickListener在你的类初始化中实现。那是 public class MyClass extends Activity implements View.OnCLickListener

于 2013-10-06T13:05:47.637 回答
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);
        }
     }
 });
于 2013-10-06T13:06:38.263 回答
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);

这将帮助您进一步调试

于 2013-10-06T13:07:26.083 回答
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);
                }

}
于 2013-10-06T13:10:04.607 回答