Sobes.tech
Junior

Чӣ гуна метавон маълумотро дар берун аз фрагмент нигоҳ дошт?

sobes.tech AI

Ҷавоб аз AI

Меъёри чанд роҳ барои нигоҳ доштани маълумот дар берун аз фрагмент вуҷуд дорад:

  • ViewModel: Идеалӣ барои нигоҳ доштани маълумоти марбут ба UI, бо тарзи огоҳ ба ҳаёти циклӣ. Пас аз тағиротҳои конфигуратсия мебарояд.

    class MyViewModel : ViewModel() {
        var data: String = ""
    }
    
  • Activity: Фрагментҳо метавонанд бо фаъолиятҳои контейнерӣ (масалан, тавассути интерфейс ё мустақим) муошират кунанд, ки дар он фаъолият метавонад маълумотро нигоҳ дорад.

    // Дар Activity
    var sharedData: String = ""
    
    // Дар Fragment
    (activity as? MyActivity)?.sharedData = "Захирашуда аз фрагмент"
    
  • Shared Preferences: Роҳи содда барои нигоҳ доштани маълумоти примитивӣ (объёмҳои хурд).

    // Дар Fragment
    val sharedPref = activity?.getSharedPreferences("my_prefs", Context.MODE_PRIVATE) ?: return
    with(sharedPref.edit()) {
        putString("saved_string", "Маълумоти ман")
        apply() // Ё commit() барои навиштани синхронӣ
    }
    
  • SQLite Database: Барои маълумоти сохторӣ ва дархостҳои мураккаб.

    -- Намунаи SQL
    CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);
    
  • Room Persistence Library: Абстраксия бар над SQLite, ки кор бо базаҳои додаҳоро осон мекунад.

    // Намунаи Room Entity
    @Entity
    data class User(
        @PrimaryKey val id: Int,
        val name: String
    )
    
  • DataStore: Алтернативаи муосир ба Shared Preferences, ки имкон медиҳад маълумотро асинхронӣ ва бехатар нигоҳ доштан.

    // Намунаи DataStore Prefs
    val EXAMPLE_COUNTER = intPreferencesKey("example_counter")
    
    // Дар Fragment
    context?.dataStore?.edit { settings ->
        val currentCounter = settings[EXAMPLE_COUNTER] ?: 0
        settings[EXAMPLE_COUNTER] = currentCounter + 1
    }
    
  • Наслӣ/Ҳосилӣ нигоҳдории: Барои нигоҳ доштани файлҳо.

    // Навишт ба файл
    val filename = "my_data.txt"
    val fileContents = "Салом, ҷаҳон!"
    context?.openFileOutput(filename, Context.MODE_PRIVATE)?.use {
        it.write(fileContents.toByteArray())
    }
    
  • Singleton: Намунаи глобалӣ барои нигоҳ доштани маълумот, ки аз ҳар ҷое дар барнома дастрас аст. Бояд бо эҳтиёт истифода шавад, зеро метавонад бо мушкилоти озмоиш ва шикастани хотира рӯбарӯ шавад.

    object DataManager {
        var sharedData: String = ""
    }
    
  • Класс барномаи: Класс, ки Application-ро васеъ мекунад, ва барои тамоми барнома глобалӣ аст ва метавонад маълумотро нигоҳ дорад.

    class MyApp : Application() {
        var globalData: String = ""
    }