2012-06-01 48 views
0

全部- 我的項目(計算提示)工作正常,直到我添加了一些BigDecimal變量來幫助舍入。現在,當我點擊 「計算」 應用程序強制關閉和logcat的說:獲取java.lang.IllegalStateException:添加BigDecimal變量後無法執行該活動的方法。

06-01 14:24:21.246: W/dalvikvm(15364): threadid=1: thread exiting with uncaught exception (group=0x40a4a1f8) 
06-01 14:24:21.256: E/AndroidRuntime(15364): FATAL EXCEPTION: main 
06-01 14:24:21.256: E/AndroidRuntime(15364): java.lang.IllegalStateException: Could not execute method of the activity 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.View$1.onClick(View.java:3044) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.View.performClick(View.java:3511) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.View.onKeyUp(View.java:6078) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.widget.TextView.onKeyUp(TextView.java:5636) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.KeyEvent.dispatch(KeyEvent.java:2623) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.View.dispatchKeyEvent(View.java:5500) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1879) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1361) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.app.Activity.dispatchKeyEvent(Activity.java:2324) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1806) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3327) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3300) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2460) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.os.Looper.loop(Looper.java:137) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at java.lang.reflect.Method.invokeNative(Native Method) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at java.lang.reflect.Method.invoke(Method.java:511) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at dalvik.system.NativeStart.main(Native Method) 
06-01 14:24:21.256: E/AndroidRuntime(15364): Caused by: java.lang.reflect.InvocationTargetException 
06-01 14:24:21.256: E/AndroidRuntime(15364): at java.lang.reflect.Method.invokeNative(Native Method) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at java.lang.reflect.Method.invoke(Method.java:511) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at android.view.View$1.onClick(View.java:3039) 
06-01 14:24:21.256: E/AndroidRuntime(15364): ... 24 more 
06-01 14:24:21.256: E/AndroidRuntime(15364): Caused by: java.lang.NumberFormatException: Invalid float: "" 
06-01 14:24:21.256: E/AndroidRuntime(15364): at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at java.lang.StringToReal.parseFloat(StringToReal.java:289) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at java.lang.Float.parseFloat(Float.java:300) 
06-01 14:24:21.256: E/AndroidRuntime(15364): at com.tip.ping.TippingActivity.calculateNumbers(TippingActivity.java:47) 
06-01 14:24:21.256: E/AndroidRuntime(15364): ... 27 more 

我的代碼是:

public class TippingActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
    public void calculateNumbers(View view) { 
     EditText text = (EditText)findViewById(R.id.edit_bill);    
     String value; 
     value = text.getText().toString();  
     float bill = Float.parseFloat(value); 
     BigDecimal billbd; 
     billbd = new BigDecimal(bill); 


     EditText text2 = (EditText)findViewById(R.id.edit_tip); 
     String value2; 
     value2 = text2.getText().toString();  
     if(!value2.contains(".")) 
      value2 = "."+value2; 
     float tip = Float.parseFloat(value2); 
     BigDecimal tipbd; 
     tipbd = new BigDecimal(tip); 


     EditText text3 = (EditText)findViewById(R.id.edit_people); 
     String value3; 
     value3 = text3.getText().toString(); 

     TextView answer = (TextView) findViewById(R.id.answer); 
     String answers; 
     answers = answer.getText().toString(); 
     float answerf = Float.parseFloat(answers); 
     BigDecimal answerbd; 
     answerbd = new BigDecimal(answerf); 
     answerbd.setScale(2); 
     TextView quick_answer = (TextView) findViewById(R.id.quick_answer); 
     String qanswers; 
     qanswers = quick_answer.getText().toString(); 
     float qanswerf = Float.parseFloat(qanswers); 
     BigDecimal qanswerbd; 
     qanswerbd = new BigDecimal(qanswerf);  

     float l3 = Float.parseFloat(value3); 
     BigDecimal l3bd; 
     l3bd = new BigDecimal(l3); 

     qanswerbd = billbd.multiply(tipbd).add(billbd); 
     qanswerbd.setScale(2, RoundingMode.HALF_UP); 
     String resultbd; 
     resultbd = qanswerbd.toString(); 

     quick_answer.setText(resultbd);  
    } 
} 

提前感謝!

回答

2

看起來像一個空的浮點值,但很難不帶行號說(47號線是...?)

造成的:java.lang.NumberFormatException:無效的浮動: 「」

EditText text = (EditText)findViewById(R.id.edit_bill); 
String value = text.getText().toString(); 

如果您在此處登錄/打印value是否有任何事情回來?

+0

對不起,我是android新手。 「日誌/打印值」是什麼?感謝您對線路號碼的回答和抱歉。 – ninge

+0

Log.d(「Appname」,「Value:」+ value);並觀察Logcat以查看運行時打印的值。這在正常的java中就像System.out.println()。 (如果你真的想要,你也可以使用System.out)。檢查值並確保它不是一個空字符串,這會在Float.parseFloat(value)中引發數字格式異常。 – Brayden

+0

謝謝。我檢查了數字,所以它必須是另一個輸入字段。 – ninge

2

它看起來像你試圖從一個空字符串解析浮點數。在使用它們之前,你會希望對你的輸入進行一些理智的檢查,或者至少包括像Float.parseFloat這樣的函數,這些函數可能會因爲Try-Catch而失敗(在這種情況下爲NumberFormatException),爲用戶提供某種有用的反饋(可能是烤麪包)。

+0

謝謝,我會再次檢查輸入。 – ninge

0

您確定您已經在AndroidManifest.xml中聲明瞭TippingActivity?

相關問題