Sobes.tech
Middle

Android tətbiqində mövzu parametrlərini necə saxlamaq və tətbiq etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Android tətbiqində mövzu parametrlərini saxlamaq və tətbiq etmək üçün bir neçə yanaşma mövcuddur.

  1. SharedPreferences: Seçilmiş mövzunun identifikatoru kimi kiçik məlumatların saxlanması üçün sadə üsul.

    // Mövzunu saxlamaq
    val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
    with (sharedPref.edit()) {
        putInt(getString(R.string.saved_theme_key), themeId)
        apply()
    }
    
    // Mövzunu oxumaq
    val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
    val defaultValue = resources.getInteger(R.integer.default_theme_id)
    val savedThemeId = sharedPref?.getInt(getString(R.string.saved_theme_key), defaultValue) ?: defaultValue
    
    // Activity-də mövzunu tətbiq etmək
    setTheme(savedThemeId)
    super.onCreate(savedInstanceState)
    
  2. DataStore: Daha müasir və asinxron üsul olub, məlumatların axınlarını və daha etibarlı saxlama təmin edir.

    // DataStore
    private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
    
    // Mövzunu saxlamaq
    suspend fun saveTheme(themeId: Int) {
        dataStore.edit { settings ->
            settings[intPreferencesKey("theme_id")] = themeId
        }
    }
    
    // Mövzunu əldə etmək
    val themeFlow: Flow<Int> = dataStore.data
        .catch { exception ->
            if (exception is IOException) {
                emit(emptyPreferences())
            } else {
                throw exception
            }
        }
        .map { preferences ->
            preferences[intPreferencesKey("theme_id")] ?: R.style.Theme_App
        }
    

    Mövzunu Activity-də tətbiq etmək, DataStore-dan dəyər alındıqdan sonra (məsələn, collect istifadə edilərək coroutine-də) və setTheme çağırıldıqdan sonra baş verə bilər. Mövzunu dəyişdikdən sonra resursların düzgün yüklənməsi üçün Activity-nin yenidən yaradılması lazım ola bilər.

  3. Sistem tənzimləmələri üçün mövzu: Android həmçinin mövzular üçün daxili dəstək təqdim edir: aydın, qaranlıq və standart (sistem tənzimləmələrini izləyir). Bu, resurslar vasitəsilə həyata keçirilə bilər.

    • Aydın və qaranlıq mövzular üçün üslublar yaradın (məsələn, res/values/themes.xmlres/values-night/themes.xml).
    • AppCompatDelegate.setDefaultNightMode-u proqram vasitəsilə və ya android:theme ilə manifestdə tənzimləyin.

Mövzunun tətbiqi adətən resursların düzgün yüklənməsi üçün Activity-nin yenidən yaradılmasını tələb edir. Bunu recreate() istifadə edərək edə bilərsiniz.