2013-02-14 65 views
0

我在我的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'它只有一個活動class.The錯誤是沒有顯示在logcat中,當我嘗試點擊應用程序的唯一按鈕(仿真器)IllegalStateException異常的Android應用程序,而試圖在模擬器中運行

我添加的onClick方法在我的活動課,並與ID的按鈕:按鈕1。在這裏我如下的代碼

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 

我將不勝感激任何幫助。

回答

1

你得到的錯誤,你指定的xml文件onClick財產,也和你也設置偵聽Java代碼相同的按鈕,太。

剛剛從XML文件中刪除onClick。或者只保留onClick並從java文件中移除監聽器。

+0

謝謝! @ Shreya。我是android的新手,所以你的輸入真的很有幫助。 – Samrat 2013-02-14 11:42:30

相關問題