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を使用していますが、次のエラーが発生し続けます: at line:saveClick.setOnClickListener(this);
エラー:
型ビューのメソッド setOnClickListener(View.setOnClickListener) は引数に適用できません。

行: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

アクティビティに OnClicklistener を実装しましたか?

public class MainActivity extends Activity implements OnClickListener {
于 2013-10-06T13:02:02.983 に答える
0

この行で.-

saveClick.setOnClickListener(this);

である必要がある場合this、 のインスタンスであると推測しています。代わりにこのようなものを試してください.-ActivityOnClickListener

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

2 番目のエラーについては、コンパイラは、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

これを 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 に答える
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 に答える