0

私は Android を初めて使用し、不可解な問題を抱えています。1つ以上のEditTextフィールドに入力されたテキストに対して数値計算を実行しようとしています(すべてのフィールドには、結果を決定するための対応するアルゴリズムがあります)、EditTextsに関連付けられたいくつかのTextViewsに結果/結果を保存しようとしています. EditText1 は TextView1 に関連付けられています。EditText2 は TextView2 に関連付けられています。私のプログラムには 10 個の EditText があり、それぞれに TextView が関連付けられています。すべての EditText に数値データが含まれている場合もあれば、まったく含まれていない場合もあります。計算はボタンが押された後に行われます (andriod:onClick="buttonPressed" を使用)。この時点で、数値入力を持つ EditText のデータを取り出して計算する必要があります (そのデータに固有の数式を使用)。結果は EditText に格納されます。

EditText と TextView を 1 つだけ使用すると、すべて問題ありません。EditText からのデータは適切に解析、計算され、結果は TextView に格納されます。その場合のコードは次のとおりです。

public void buttonPressed(View view)
{
    if (editText1.getText() != null)
        textView1.setText(Double.toString(Double.valueOf(editText1.getText().toString())/12));
}   

ただし、このコードを拡張して別の EditText と TextView を次のように使用しようとすると、次のようになります。

public void buttonPressed(View view)
{
    if (editText1.getText() != null)
        textView1.setText(Double.toString(Double.valueOf(editText1.getText().toString())/12));
    if (editText2.getText() != null)
        textView2.setText(Double.toString(Double.valueOf(editText2.getText().toString())/107));
}   

解析の問題を示していると思われるエラーがいくつか表示されます。LogCat の出力は次のとおりです (私はこれを解釈するのが得意ではありません)。

11-07 20:38:14.191: E/AndroidRuntime(1570): FATAL EXCEPTION: main
11-07 20:38:14.191: E/AndroidRuntime(1570): java.lang.IllegalStateException: Could not execute method of  the activity
11-07 20:38:14.191: E/AndroidRuntime(1570):     at android.view.View$1.onClick(View.java:3597)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at android.view.View.performClick(View.java:4202)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at android.view.View$PerformClick.run(View.java:17340)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at android.os.Handler.handleCallback(Handler.java:725)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at android.os.Looper.loop(Looper.java:137)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at android.app.ActivityThread.main(ActivityThread.java:5039)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at java.lang.reflect.Method.invokeNative(Native Method)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at java.lang.reflect.Method.invoke(Method.java:511)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at dalvik.system.NativeStart.main(Native Method)
11-07 20:38:14.191: E/AndroidRuntime(1570): Caused by: java.lang.reflect.InvocationTargetException
11-07 20:38:14.191: E/AndroidRuntime(1570):     at java.lang.reflect.Method.invokeNative(Native Method)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at java.lang.reflect.Method.invoke(Method.java:511)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at android.view.View$1.onClick(View.java:3592)
11-07 20:38:14.191: E/AndroidRuntime(1570):     ... 11 more
11-07 20:38:14.191: E/AndroidRuntime(1570): Caused by: java.lang.NumberFormatException: Invalid double: ""
11-07 20:38:14.191: E/AndroidRuntime(1570):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at java.lang.StringToReal.parseDouble(StringToReal.java:248)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at java.lang.Double.parseDouble(Double.java:295)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at java.lang.Double.valueOf(Double.java:332)
11-07 20:38:14.191: E/AndroidRuntime(1570):     at com.example.breadmakingconversions.MainActivity.sendToConvert(MainActivity.java:160)
11-07 20:38:14.191: E/AndroidRuntime(1570):     ... 14 more

EditText でこのデータの計算を実行するために使用した解析方法がなぜ 1 つのフィールドでは機能するのかわかりません (これを行う方法はわかりませんでしたが、多くの試行錯誤によってこの方法を見つけました)。 2。私は過去数時間にわたってこれを行うための多くの代替方法を試しましたが、それを理解することはできません.

どんな助けでも大歓迎です!

編集:すべての EditTexts に android:numeric="decimal" があることを忘れていました (非推奨であることはわかっていますが、とにかくここで使用しています)。これにより、数値以外の入力は決してありません。

4

2 に答える 2