0

アクティビティ クラスが 1 つしかない Android アプリでエラーjava.lang.IllegalStateException: Could not find a method onClick(View) in the activity class com.example.mysostest.MySOSTestActivity for onClick handler on view class android.widget.Button with id 'button1'が発生します。アプリ (エミュレーター) で唯一のボタンをクリックしようとすると、logcat にエラーが表示されます。

アクティビティ クラスに onClick メソッドを追加し、id:button1のボタンを追加しました。コードは次のとおりです。

package com.example.mysostest;

import android.app.ActionBar;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;

import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
//import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
//import android.widget.TextView;
import android.widget.Toast;
import android.app.*;
//import com.example.sostestproject.*;
import com.tcs.sos.api.Connection;
import com.tcs.sos.api.Operations;
import com.tcs.sos.api.OperationsEnum;
import com.tcs.sos.api.OperationsFactory;
import com.tcs.sos.api.operations.InsertObservationRequest;
import com.tcs.sos.api.operations.InsertObservationResponse;
import com.tcs.sos.api.operations.Location;
import com.tcs.sos.api.operations.Observation;
import com.tcs.sos.api.operations.RegisterSensorRequest;
import com.tcs.sos.api.operations.RegisterSensorResponse;
import com.tcs.sos.api.operations.Sensor;
import com.tcs.sos.api.operations.SensorMLOutput;
import com.tcs.sos.api.operations.exceptions.SOSException;
import com.tcs.sos.api.operations.exceptions.ValidationException;;

public class MySOSTestActivity extends Activity {

    final Context context=this;
    public static final String TAG="Just to create LOG";

    static String SOSBaseURL="http://192.168.161.52:8080/52nSOSv3.2.1/sos";
    static String API_KEY = "65bda03805a7f0186ef44687682d108f";
    static String APP_KEY = "e9f718e06f2872f02283b83a4b499ee4";

    private EditText text1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_sostest);
        text1=(EditText)findViewById(R.id.editText1);

         Button button=(Button)findViewById(R.id.button1);
         final String inputString=text1.getText().toString();
            if(text1.getText().length()==0){
            Toast.makeText(this, "You have enetered blank ", Toast.LENGTH_LONG).show();
            return;
            }
         button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // TODO Auto-generated method stub
                try{
                Connection.sos = SOSBaseURL;
                RegisterSensorRequest r = null;
                String ECG_Offering = "Sample_Data_testing_FromAndroidApp";
                r = new RegisterSensorRequest(Sensor.newSensor(inputString));
                r.add("heart_rate_value", ECG_Offering).Quantity();
                r.add("heart_rate_behaviour", ECG_Offering).Text(); //Category Type
                r.add("ecg", ECG_Offering).Text(); //Category Type
                r.add("patientId", ECG_Offering).Text(); //New field to accommodate location
                r.add("Location", ECG_Offering).Location();

                r.setApiKey(API_KEY);
                r.setAppKey(APP_KEY);
                RegisterSensorResponse response = (RegisterSensorResponse)OperationsFactory.get(OperationsEnum.RegisterSensor).execute(r);

                if(response.isSuccess()) {
                    System.out.println("Generating API KEY....");
                    System.out.println("The response is"+response.toString());
                    Log.e(TAG,"Connected to SOS");

                AlertDialog.Builder alertDialogBuilder=new AlertDialog.Builder(context);
                alertDialogBuilder.setMessage("Connected to SOS")
                                  .setCancelable(false)
                                  .setPositiveButton("OK",new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        // TODO Auto-generated method stub
                                        dialog.cancel();
                                    }
                                });
                alertDialogBuilder.create();
                alertDialogBuilder.show();
                }
                }catch(ClassNotFoundException ex){
                    ex.printStackTrace();
                }
                catch(IllegalAccessException ex){
                    ex.printStackTrace();
                }
                catch(InstantiationException ex){
                    ex.printStackTrace();
                }
                catch(ValidationException ex){
                    ex.printStackTrace();
                }
                catch(SOSException ex){
                    ex.printStackTrace();
                }
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_my_sostest, menu);
        return true;
    }

}

logcatビューで次のエラーが発生しています

02-14 09:47:49.476: E/AndroidRuntime(839): FATAL EXCEPTION: main
02-14 09:47:49.476: E/AndroidRuntime(839): java.lang.IllegalStateException: Could not find a method onClick(View) in the activity class com.example.mysostest.MySOSTestActivity for onClick handler on view class android.widget.Button with id 'button1'
02-14 09:47:49.476: E/AndroidRuntime(839):  at android.view.View$1.onClick(View.java:3584)
02-14 09:47:49.476: E/AndroidRuntime(839):  at android.view.View.performClick(View.java:4202)
02-14 09:47:49.476: E/AndroidRuntime(839):  at android.view.View$PerformClick.run(View.java:17340)
02-14 09:47:49.476: E/AndroidRuntime(839):  at android.os.Handler.handleCallback(Handler.java:725)
02-14 09:47:49.476: E/AndroidRuntime(839):  at android.os.Handler.dispatchMessage(Handler.java:92)
02-14 09:47:49.476: E/AndroidRuntime(839):  at android.os.Looper.loop(Looper.java:137)
02-14 09:47:49.476: E/AndroidRuntime(839):  at android.app.ActivityThread.main(ActivityThread.java:5039)
02-14 09:47:49.476: E/AndroidRuntime(839):  at java.lang.reflect.Method.invokeNative(Native Method)
02-14 09:47:49.476: E/AndroidRuntime(839):  at java.lang.reflect.Method.invoke(Method.java:511)
02-14 09:47:49.476: E/AndroidRuntime(839):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-14 09:47:49.476: E/AndroidRuntime(839):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-14 09:47:49.476: E/AndroidRuntime(839):  at dalvik.system.NativeStart.main(Native Method)
02-14 09:47:49.476: E/AndroidRuntime(839): Caused by: java.lang.NoSuchMethodException: onClick [class android.view.View]
02-14 09:47:49.476: E/AndroidRuntime(839):  at java.lang.Class.getConstructorOrMethod(Class.java:460)
02-14 09:47:49.476: E/AndroidRuntime(839):  at java.lang.Class.getMethod(Class.java:915)
02-14 09:47:49.476: E/AndroidRuntime(839):  at android.view.View$1.onClick(View.java:3577)
02-14 09:47:49.476: E/AndroidRuntime(839):  ... 11 more
02-14 09:48:33.115: I/Process(839): Sending signal. PID: 839 SIG: 9

これについて何か助けていただければ幸いです。

4

1 に答える 1

1

xml ファイルでもプロパティを指定しているため、エラーが発生していますonClick。また、Java コードでも同じボタンのリスナーを設定しています。

onClickxml ファイルから削除するだけです。またはonClick、リスナーのみを保持して Java ファイルから削除します。

于 2013-02-14T10:18:01.780 に答える