2012-03-19 61 views
0

我有一個事件處理程序的代碼:我必須在哪裏放置事件處理程序?

rbM.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      public void onCheckedChanged(CompoundButton buttonView, 
        boolean isChecked) { 
       // TODO Auto-generated method stub 
       if (isChecked) { 
        try { 
         Double.parseDouble(etAmm.getText().toString()); 
         if (etPerc.getText().toString() != null 
           && etPerc.getText().toString() != "") { 
          etRis.setText(new Double(
            Double.parseDouble(etAmm.getText() 
              .toString()) - percentuale()) 
            .toString()); 
          etPercTot.setText(new Double(percentuale()) 
            .toString() + "%"); 
         } 
         et30.setText(new Double(Double.parseDouble(etAmm 
           .getText().toString()) - percentuale(30)) 
           .toString()); 
         etPerc30.setText(new Double(percentuale(30)) 
           .toString() + "%"); 
         et50.setText(new Double(Double.parseDouble(etAmm 
           .getText().toString()) - percentuale(50)) 
           .toString()); 
         etPerc50.setText(new Double(percentuale(50)) 
           .toString() + "%"); 
         et70.setText(new Double(Double.parseDouble(etAmm 
           .getText().toString()) - percentuale(70)) 
           .toString()); 
         etPerc70.setText(new Double(percentuale(70)) 
           .toString() + "%"); 
        } catch (Exception ex) { 
        } 
       } 
      } 

     }); 

我有它在onCreate方法,但是當我啓動應用程序壓傷。爲什麼??? Eclipse不給我任何錯誤,如果我把一個try catch塊試圖在該方法中的一切,我會得到null作爲例外。我的佈局是正確的,因爲如果我啓動沒有任何由我編輯的Java代碼的應用程序,它會完美地加載到屏幕上。請幫幫我!!!!!

p.s. 我有其他事件處理程序,但這是最短的,我不認爲它可能會從處理程序更改爲處理程序,它總是隻是一個聲明。

這裏的logcat中有人問:

 
03-20 15:03:13.775: D/AndroidRuntime(262): Shutting down VM 

03-20 15:03:13.775: W/dalvikvm(262): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 

03-20 15:03:13.895: E/AndroidRuntime(262): FATAL EXCEPTION: main 

03-20 15:03:13.895: E/AndroidRuntime(262): java.lang.RuntimeException: Unable to start activity ComponentInfo{ciprianis.genius.percentuali/ciprianis.genius.percentuali.PercentualiActivity}: java.lang.NullPointerException 

03-20 15:03:13.895: E/AndroidRuntime(262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 

03-20 15:03:13.895: E/AndroidRuntime(262): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 

03-20 15:03:13.895: E/AndroidRuntime(262): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 

03-20 15:03:13.895: E/AndroidRuntime(262): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 

03-20 15:03:13.895: E/AndroidRuntime(262): at android.os.Handler.dispatchMessage(Handler.java:99) 

03-20 15:03:13.895: E/AndroidRuntime(262): at android.os.Looper.loop(Looper.java:123) 

03-20 15:03:13.895: E/AndroidRuntime(262): at android.app.ActivityThread.main(ActivityThread.java:4627) 

03-20 15:03:13.895: E/AndroidRuntime(262): at java.lang.reflect.Method.invokeNative(Native Method) 

03-20 15:03:13.895: E/AndroidRuntime(262): at java.lang.reflect.Method.invoke(Method.java:521) 

03-20 15:03:13.895: E/AndroidRuntime(262): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 

03-20 15:03:13.895: E/AndroidRuntime(262): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 

03-20 15:03:13.895: E/AndroidRuntime(262): at dalvik.system.NativeStart.main(Native Method) 

03-20 15:03:13.895: E/AndroidRuntime(262): Caused by: java.lang.NullPointerException 

03-20 15:03:13.895: E/AndroidRuntime(262): at ciprianis.genius.percentuali.PercentualiActivity.onCreate(PercentualiActivity.java:62) 

03-20 15:03:13.895: E/AndroidRuntime(262): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 

03-20 15:03:13.895: E/AndroidRuntime(262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 

03-20 15:03:13.895: E/AndroidRuntime(262): ... 11 more 
+0

添加您的完整logcat – 2012-03-19 18:22:26

+0

您能指出哪些是PercentualiActivity.java中的第62行嗎?這就是你的NPE被拋出的地方。 – Nick 2012-03-20 15:09:11

+0

這是 etAmm.setOnFocusChangeListener(新EditText.OnFocusChangeListener(){它是在onCreate方法的事件處理程序聲明的開頭 – Cippo 2012-03-20 15:15:43

回答

0

從你對62行的說法看起來好像etAmm爲空。要麼你沒有初始化它,要麼FindViewById()在你的佈局中找不到它。

+0

在這種情況下,findViewById不會找到它?我有類的EditTexts和其他控件的聲明,但不是在onCreate方法,那麼我有一個空值,它將findViewById值分配給每個變量。在任何事件處理函數聲明之前,我都會調用這個加載方法。 onCreate方法。 – Cippo 2012-03-20 17:41:07

+0

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!我不知道爲什麼,但我只是嘗試刪除加載無效,並簡單地把它放在它的代碼在onCreate方法,之前我稱之爲方法,它的工作原理!!!!!!!!!!!!!!!!!! THANKS !!!!!!!!! – Cippo 2012-03-20 17:46:34

0

我的猜測是,您的處理程序爲空。但沒有代碼只是一個合格的猜測。

相關問題