[Android Studio | Java] Wie kann ich Werte von Variablen aus der Main holen, ohne dass die App abstürzt?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Da fehlt die Referenz auf die Instanz von Main.

So wie du es jetzt hast ist deine Variable m undefiniert.

Lösung: An geeigneter Stelle eine Referenz auf die Instanz von Main übergeben und verwenden.

Deine App stürzt ab, weil eine Exeption geworfen wurde. Exceptions, die nicht abgefangen wurden (try catch), lassen die gesamte App abstürzen.

Wenn du deine App startest taucht ein Android Studio ein Fenster auf, wo die Logs von deiner App angezeigt. Wenn die App abstürzt taucht die Fehlermerldung dort auf. Es sollte ein größer Block aus rotem Text (Stacktrace) erscheinen. Die erste Zeile aus dem Block ist interessant. Dort steht die Fehlermeldung mit einer Nachricht.

Wie es bereits erwähnt wurde, wird es daran liegen, dass die Variable m nicht initialisiert wurde. Die Exception dürfte demnach eine NullPointerException sein.

Je nach dem was du vor hast, könnte auch ein anderer Ansatz besser sein. Du kannst auch die komplette TextWatcher Klasse auslagern.

Dann hättest du in der Main folgendes:

editText.addTextChangedListener(new TextKlasse(this));

und in der Textklasse:

public class TextKlasse implements TextWatcher {
    private final Main m;

    public TextKlasse(Main m) {
        this.m = m;
    }
    
    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        if (m.editText.length() > 0) {
            m.XYZ.setVisibility(View.INVISIBLE);
        }
    }

    // beforeTextChanged
    // afterTextChanged
}

Ob es der schönere Weg ist, die gesamte TextWatcher Klasse oder nur die Funktion unter onTextChanged hängt davon, welche man Pläne man sonst hat und auch wie man mit weiteren Textfeldern umgehen möchte.

verreisterNutzer  07.08.2022, 08:11

In IntelliJ wurde tatsächlich kein Fehler geworfen, aber danke, es lag wirklich daran, dass ich die getInstance-Methode vergessen hatte.

0