Ich erstelle eine einfache Android-Einheitenrechner-App in Java mit EditText, Spinner, Button und TextView. Die Benutzeroberfläche wird korrekt geladen, aber wenn ich auf die Schaltfläche Konvertieren klicke, passiert nichts – keine Fehler, keine Ausgabe und keine sichtbaren Änderungen im Ergebnisfeld.
Das habe ich bereits überprüft und beobachtet:
Wahrscheinliche Ursachen (häufig):
- UI-Handler nicht verkabelt – der onClick der Schaltfläche oder findViewById-IDs stimmen möglicherweise nicht mit Layout-IDs überein.
- Parsing-Problem – leere Eingabe oder Dezimaltrennzeichenproblem, das eine stille NumberFormatException verursacht.
- Ergebnisansicht im UI-Thread nicht aktualisiert.
- Konvertierungslogik gibt 0 oder falsche Einheitenschlüssel zurück.
- Ausnahmen werden abgefangen und ignoriert (kein sichtbares Protokoll).
[*]Überprüfte IDs im setContentView-Layout stimmen mit findViewById-Aufrufen überein.
[*]Sichergestellt, dass setOnClickListener tatsächlich für die Schaltfläche festgelegt ist.
Gekürzte und validierte Eingabe vor dem Parsen (
Code: Select all
Double.parseDoubleCode: Select all
package com.example.unitconverter;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
import androidx.appcompat.app.AppCompatActivity;
public class UnitConverterActivity extends AppCompatActivity {
private EditText input;
private Spinner fromUnit, toUnit;
private TextView result;
private Button convertBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input = findViewById(R.id.input_value);
fromUnit = findViewById(R.id.spinner_from);
toUnit = findViewById(R.id.spinner_to);
result = findViewById(R.id.text_result);
convertBtn = findViewById(R.id.button_convert);
String[] units = { "meters", "kilometers" };
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, units);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
fromUnit.setAdapter(adapter);
toUnit.setAdapter(adapter);
convertBtn.setOnClickListener(v -> {
String raw = input.getText().toString().trim();
if (raw.isEmpty()) {
result.setText("Enter a value");
return;
}
double value;
try {
value = Double.parseDouble(raw);
} catch (NumberFormatException e) {
result.setText("Invalid number");
return;
}
String from = (String) fromUnit.getSelectedItem();
String to = (String) toUnit.getSelectedItem();
double out = convert(value, from, to);
result.setText(String.valueOf(out));
});
}
private double convert(double value, String from, String to) {
if (from.equals(to)) return value;
if (from.equals("meters") && to.equals("kilometers")) return value / 1000.0;
if (from.equals("kilometers") && to.equals("meters")) return value * 1000.0;
return value;
}
}
Code: Select all
activity_main.xmlCode: Select all
Was könnte dazu führen, dass das Klickereignis der Schaltfläche „Konvertieren“ das Ergebnis in meiner Android-Einheitenumrechner-App nicht aktualisiert, selbst wenn das Layout und die Logik korrekt erscheinen?
Was sind die häufigsten Fehler oder Fehlkonfigurationen, die verhindern, dass setOnClickListener die Benutzeroberfläche auslöst oder aktualisiert?
Mobile version