Ich versuche, eine einfache Zeit Rechner App mit zwei EditText Felder zu erstellen. Der unten stehende Code ist nur ein normaler Rechner, der zwei Zahlen addiert, die ich aufgepeitscht habe, um den Text-geänderten Listener zu testen. Aus irgendeinem Grund stürzt es jedes Mal ab, wenn ich diese Anwendung starte und eine Zahl in EditText-Felder einfüge, und frage, ob ich die App neu starten möchte. Ich möchte nur, dass die Summe jedes Mal aktualisiert wird, wenn der Benutzer die Eingabe einer Nummer beendet, anstatt einen Knopf drücken zu müssen. Kann mir jemand helfen, den Fehler zu finden? Ich habe die ersten paar Variablen außerhalb der onCreate-Methode initialisiert.EditText AfterTextChanged Problem
Log Fehler:
07-03 21:06:45.499 2397-2397/com.example.thesoulreaper.swimmingcalculator E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.thesoulreaper.swimmingcalculator, PID: 2397
java.lang.NumberFormatException: empty String
at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1071)
at java.lang.Float.parseFloat(Float.java:459)
at com.example.thesoulreaper.swimmingcalculator.OneHundredCalculatorActivity$3.afterTextChanged(OneHundredCalculatorActivity.java:103)
at android.widget.TextView.sendAfterTextChanged(TextView.java:8202)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10381)
at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1218)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:579)
at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:230)
at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:229)
at android.view.inputmethod.BaseInputConnection.deleteSurroundingText(BaseInputConnection.java:251)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:451)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:91)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Mein Code:
fiftyEditText = (EditText) findViewById(R.id.FiftyEditText);
hundredEditText = (EditText) findViewById(R.id.HundredEditText);
totalTextView = (TextView) findViewById(R.id.totalTextView);
fiftyEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if(Integer.parseInt(hundredEditText.getText().toString()) > 0 && Integer.parseInt(fiftyEditText.getText().toString()) > 0) {
int total = Integer.parseInt(hundredEditText.getText().toString()) + Integer.parseInt(fiftyEditText.getText().toString());
totalTextView.setText(total);
} else if(Integer.parseInt(hundredEditText.getText().toString()) <= 0 && Integer.parseInt(fiftyEditText.getText().toString()) > 0) {
totalTextView.setText(Integer.parseInt(fiftyEditText.getText().toString()));
} else if(Integer.parseInt(hundredEditText.getText().toString()) > 0 && Integer.parseInt(fiftyEditText.getText().toString()) <= 0) {
totalTextView.setText(Integer.parseInt(hundredEditText.getText().toString()));
} else if (Integer.parseInt(hundredEditText.getText().toString()) <= 0 && Integer.parseInt(fiftyEditText.getText().toString()) <= 0) {
totalTextView.setText(0);
}
}
});
hundredEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if(Integer.parseInt(hundredEditText.getText().toString()) > 0 && Integer.parseInt(fiftyEditText.getText().toString()) > 0) {
int total = Integer.parseInt(hundredEditText.getText().toString()) + Integer.parseInt(fiftyEditText.getText().toString());
totalTextView.setText(total);
} else if(Integer.parseInt(hundredEditText.getText().toString()) <= 0 && Integer.parseInt(fiftyEditText.getText().toString()) > 0) {
totalTextView.setText(Integer.parseInt(fiftyEditText.getText().toString()));
} else if(Integer.parseInt(hundredEditText.getText().toString()) > 0 && Integer.parseInt(fiftyEditText.getText().toString()) <= 0) {
totalTextView.setText(Integer.parseInt(hundredEditText.getText().toString()));
} else if (Integer.parseInt(hundredEditText.getText().toString()) <= 0 && Integer.parseInt(fiftyEditText.getText().toString()) <= 0) {
totalTextView.setText(0);
}
}
});
Können zeigen Sie das Protokoll Fehler entdeckt? –
Es gibt keinen Fehler, es funktioniert einfach nicht –
Es muss eine Logcat Nachricht geben ... –