0Pricing
Android Academy · Ders

Hata Yönetimi ve Kullanıcı Deneyimi

Kullanıcı arayüzü durumlarını sealed sınıflarla (Loading/Success/Error) modelleyin. ProgressBar ve Yeniden Dene eylemlerine sahip Snackbar gösterin; TextInputLayout içi doğrulama hatalarını yönetin.

Hata Yönetimi ve Kullanıcı Deneyimi, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 6 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 6 dersten oluşur.

Hata Yönetimi Neden Önemlidir

Açıklama yapılmadan çöken veya donan uygulamalar bozuk hissi verir. Kullanıcılar ne olduğunu ya da bundan sonra ne yapmaları gerektiğini bilmez.

İyi hata yönetimi şunları sağlar:

  • Uygulama kararlı kalır
  • Kullanıcılar net bir mesaj görür
  • Yeniden deneyebilir veya işlem yapabilirler

İyi hata yönetimi, 2 yıldızlı ve 5 yıldızlı uygulama değerlendirmesi arasındaki farktır.

Kullanıcı Arayüzü Durumunu Modelleme

Temiz bir yaklaşım: kullanıcı arayüzünün tüm olası durumlarını bir sealed class ile modelleyin:

  • Loading — istek devam ediyor
  • Success(data) — veriler kullanılabilir
  • Error(message) — bir sorun oluştu

ViewModel bu durumlardan birini yayınlar; kullanıcı arayüzü de bunu görüntüler.

Sealed Class UiState

Tüm olası durumlar için bir sealed class tanımlayın:

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")
        }
    }
}

Kullanıcı Arayüzünde Durumu Görüntüleme

Durumu gözlemleyin ve her durum için doğru görünümü gösterin:

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
        }
    }
}

Yükleniyor Durumu için ProgressBar

Verileri beklerken bir ProgressBar gösterin:

  • Dönen bir yükleyici için android:indeterminate="true" kullanın
  • Görünürlüğü View.VISIBLE ve View.GONE arasında değiştirin
  • GONE, görünümü düzenden kaldırır (yalnızca görünmez yapmaz; yer kaplamasını da engeller)

Snackbar ve Toast Karşılaştırması

Hata mesajları için Toast yerine Snackbar kullanmayı tercih edin:

  • Snackbar bir işlem düğmesi içerebilir (örneğin "Yeniden dene")
  • Geçerli ekrana bağlıdır; diğer uygulamaların üzerinde yüzmez
  • Otomatik olarak veya dokunulduğunda kapanır

Yeniden Dene İşlemli Snackbar

Yeniden Dene işlem düğmesiyle bir hata gösterin:

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()
}

Girdi Doğrulama

Kullanıcı girdisini sunucuya göndermeden önce doğrulayın:

  • Alan altında satır içi hataları göstermek için TextInputLayout ile error özelliğini kullanın
  • API'yi çağırmadan önce boş alanları, e-posta biçimini ve parola uzunluğunu kontrol edin
  • Kullanıcı yazmaya başladığında hataları temizleyin

TextInputLayout Hatası

Form alanlarında satır içi doğrulama hatalarını gösterin:

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)
}

Hızlı Kontrol

Hangi görünürlük durumu, bir görünümü düzenden tamamen kaldırır ve hiç yer kaplamamasını sağlar?

Özet: Hata Yönetimi ve Kullanıcı Deneyimi

Artık uygulamalarınız hataları düzgün bir şekilde ele alabilir:

  • Durumu sealed class ile Loading / Success / Error olarak modelleme
  • Yükleme sırasında bir ProgressBar gösterme
  • Ağ hataları için Yeniden Dene işlemli Snackbar
  • Form doğrulama için TextInputLayout satır içi hataları
  • View.GONE ve View.INVISIBLE karşılaştırması — kaldırma ve gizleme

Son ders: uygulamanızı Play Store'da yayınlayın!

Sıkça Sorulan Sorular

“Hata Yönetimi ve Kullanıcı Deneyimi” dersi ücretsiz mi?

Evet — “Hata Yönetimi ve Kullanıcı Deneyimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 6 dersten oluşur.

“Hata Yönetimi ve Kullanıcı Deneyimi” dersinde ne öğreneceğim?

Kullanıcı arayüzü durumlarını sealed sınıflarla (Loading/Success/Error) modelleyin. ProgressBar ve Yeniden Dene eylemlerine sahip Snackbar gösterin; TextInputLayout içi doğrulama hatalarını yönetin. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Android Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 6 dersinin 3. dersidir.

“Hata Yönetimi ve Kullanıcı Deneyimi” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Retrofit ve REST API'leri
  2. Coil ile Görüntü Yükleme
  3. Hata Yönetimi ve Kullanıcı Deneyimi
  4. Anlık Bildirimler
  5. WorkManager ve Arka Plan Görevleri
  6. Play Store'da Yayınlama
← Android Academy Sayfasına Dön