0Pricing
Android Academy · Lektion

Fehlerbehandlung und UX

Modellieren Sie UI-Zustände mit versiegelten Klassen (Loading/Success/Error). Zeigen Sie ProgressBar und Snackbar mit Retry-Aktionen an und validieren Sie Eingabefehler inline mit TextInputLayout.

Fehlerbehandlung und UX ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 6. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 6 Lektionen.

Warum Fehlerbehandlung wichtig ist

Apps, die ohne Erklärung abstürzen oder einfrieren, wirken fehlerhaft. Benutzer wissen nicht, was passiert ist oder was sie als Nächstes tun sollen.

Gute Fehlerbehandlung bedeutet:

  • Die App bleibt stabil
  • Benutzer erhalten eine klare Meldung
  • Sie können es erneut versuchen oder eine Aktion ausführen

Das ist der Unterschied zwischen einer App-Bewertung mit 2 und mit 5 Sternen.

UI-Zustände modellieren

Ein sauberes Muster: Modellieren Sie alle möglichen UI-Zustände mit einer sealed class:

  • Loading — Anfrage wird verarbeitet
  • Success(data) — Daten sind verfügbar
  • Error(message) — Etwas ist schiefgelaufen

Das ViewModel gibt einen dieser Zustände aus; die UI stellt ihn dar.

Sealed Class UiState

Definieren Sie eine sealed class für alle möglichen Zustände:

sealed class UiState<out T> {
    object Loading : UiState<Nothing>()
    data class Success<T>(val data: T) : UiState<T>()
    data class Error(val message: String) : UiState<Nothing>()
}

// In ViewModel:
private val _state = MutableLiveData<UiState<List<Post>>>()
val state: LiveData<UiState<List<Post>>> = _state

fun loadPosts() {
    _state.value = UiState.Loading
    viewModelScope.launch {
        try {
            val posts = withContext(Dispatchers.IO) { repo.getPosts() }
            _state.value = UiState.Success(posts)
        } catch (e: Exception) {
            _state.value = UiState.Error(e.message ?: "Unknown error")
        }
    }
}

Zustand in der UI darstellen

Beobachten Sie den Zustand und zeigen Sie für jeden Fall die passende Ansicht an:

viewModel.state.observe(this) { state ->
    when (state) {
        is UiState.Loading -> {
            binding.progressBar.visibility = View.VISIBLE
            binding.recyclerView.visibility = View.GONE
            binding.tvError.visibility = View.GONE
        }
        is UiState.Success -> {
            binding.progressBar.visibility = View.GONE
            binding.recyclerView.visibility = View.VISIBLE
            adapter.submitList(state.data)
        }
        is UiState.Error -> {
            binding.progressBar.visibility = View.GONE
            binding.tvError.text = state.message
            binding.tvError.visibility = View.VISIBLE
        }
    }
}

ProgressBar beim Laden

Zeigen Sie eine ProgressBar an, während Sie auf Daten warten:

  • Verwenden Sie android:indeterminate="true" für einen sich drehenden Ladeindikator
  • Wechseln Sie die Sichtbarkeit zwischen View.VISIBLE und View.GONE
  • GONE entfernt die Ansicht aus dem Layout (sie ist nicht nur unsichtbar — sie nimmt keinen Platz ein)

Snackbar oder Toast

Verwenden Sie für Fehlermeldungen bevorzugt Snackbar statt Toast:

  • Eine Snackbar kann eine Aktionstaste enthalten (z. B. „Erneut versuchen“)
  • Sie ist an den aktuellen Bildschirm angefügt und schwebt nicht über anderen Apps
  • Sie wird automatisch oder durch Tippen geschlossen

Snackbar mit „Erneut versuchen“

Zeigen Sie einen Fehler mit einer Aktionstaste „Erneut versuchen“ an:

import com.google.android.material.snackbar.Snackbar

fun showError(message: String) {
    Snackbar.make(
        binding.root,  // root view of the screen
        message,
        Snackbar.LENGTH_INDEFINITE  // stays until dismissed
    ).setAction("Retry") {
        viewModel.loadPosts()  // retry the request
    }.show()
}

Eingaben validieren

Validieren Sie Benutzereingaben, bevor Sie sie an den Server senden:

  • Verwenden Sie TextInputLayout mit der Eigenschaft error, um Inline-Fehler unter dem Feld anzuzeigen
  • Prüfen Sie leere Felder, das E-Mail-Format und die Passwortlänge, bevor Sie die API aufrufen
  • Löschen Sie Fehler, sobald der Benutzer mit der Eingabe beginnt

TextInputLayout-Fehler

Zeigen Sie Inline-Validierungsfehler bei Formularfeldern an:

fun validateAndSubmit() {
    val email = binding.etEmail.text.toString().trim()
    val password = binding.etPassword.text.toString()

    var hasError = false

    if (email.isBlank() || !email.contains("@")) {
        binding.tilEmail.error = "Enter a valid email"
        hasError = true
    } else {
        binding.tilEmail.error = null  // clear error
    }

    if (password.length < 6) {
        binding.tilPassword.error = "Minimum 6 characters"
        hasError = true
    } else {
        binding.tilPassword.error = null
    }

    if (!hasError) viewModel.login(email, password)
}

Kurzer Check

Welcher Sichtbarkeitszustand entfernt eine Ansicht vollständig aus dem Layout, sodass sie keinen Platz einnimmt?

Zusammenfassung: Fehlerbehandlung und UX

Ihre Apps können jetzt Fehler elegant behandeln:

  • Modellieren Sie den Zustand mit einer sealed class als Loading / Success / Error
  • Zeigen Sie während des Ladens eine ProgressBar an
  • Snackbar mit der Aktion „Erneut versuchen“ bei Netzwerkfehlern
  • Inline-Fehler in TextInputLayout zur Formularvalidierung
  • View.GONE gegenüber View.INVISIBLE — entfernen gegenüber ausblenden

Letzte Lektion: Veröffentlichen Sie Ihre App im Play Store!

Häufig gestellte Fragen

Ist die Lektion „Fehlerbehandlung und UX“ kostenlos?

Ja — der vollständige Text von „Fehlerbehandlung und UX“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 6 Lektionen.

Was lerne ich in „Fehlerbehandlung und UX“?

Modellieren Sie UI-Zustände mit versiegelten Klassen (Loading/Success/Error). Zeigen Sie ProgressBar und Snackbar mit Retry-Aktionen an und validieren Sie Eingabefehler inline mit TextInputLayout. Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Android Academy zu starten?

Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 6.

Wie lange dauert die Lektion „Fehlerbehandlung und UX“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?

Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Retrofit und REST-APIs
  2. Bilder mit Coil laden
  3. Fehlerbehandlung und UX
  4. Push-Benachrichtigungen
  5. WorkManager und Hintergrundaufgaben
  6. Veröffentlichen im Play Store
← Zurück zu Android Academy