Чаро наметавони параметрҳоро ба конструктори фрагмент гузошт?
sobes.tech AI
Ҷавоб аз AI
Параметрҳоро наметавон мустақиман ба конструктори фрагмент бо сабаби давраи ҳаёти Android ва раванди барқарорсозии ҳолат гузошт. Фрагментҳо метавонанд аз ҷониби системаи навсозӣ шаванд (масалан, дар вақти тағирёбии конфигуратсия ё камбуди хотира), ва дар ин ҳолат, конструктори онҳо бо аргументҳои нолӣ даъват мешавад. Агар шумо параметрҳоро ба конструктор диҳед, онҳо дар вақти навсозӣ гум мешаванд, ки метавонад ба барнома фалаҷ ё рафтори нодуруст оварда расонад.
Дуруст роҳи гузоштани маълумот ба фрагмент истифодаи объекти Bundle ва усули setArguments() мебошад. Ин bundle аз ҷониби системаи нигоҳ дошта шуда, дар вақти навсозии фрагмент барқарор мешавад.
Масал:
Гузаронидани маълумот:
// Эҷоди фрагмент бо аргументҳо
val fragment = MyFragment()
val bundle = Bundle()
bundle.putString("калид", "қимат")
fragment.arguments = bundle
// Иваз кардани фрагмент
supportFragmentManager.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit()
Гирифтани маълумот дар дохили фрагмент:
// Дар дохили фрагмент, масалан, дар onCreate() ё onViewCreated()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
val қимат = it.getString("калид")
// Истифодаи "қимат"
}
}
Ин ба автоматӣ нигоҳ доштани маълумот ва барқарор кардани он дар вақти навсозии системаи фрагмент кӯмак мекунад.