Ինչու՞ հնարավոր չէ փոխանցել պարամետրեր ֆրագմենտի կոնստրուկտորին։
sobes.tech AI
Պատասխան AI-ից
Ազատորեն փոխանցել պարամետրեր ֆրագմենտի կոնստրուկտորին հնարավոր չէ Android-ի կյանքի ցիկլի և վիճակի վերականգնման գործընթացի պատճառով: Ֆրագմենտները կարող են վերականգնվել համակարգի կողմից (օրինակ, կոնֆիգուրացիայի փոփոխության կամ հիշողության պակասի դեպքում), և այդ ժամանակ նրանց կանչվում է նրանց ստանդարտ կոնստրուկտորը առանց արգումենտների: Եթե դուք փոխանցում եք պարամետրեր կոնստրուկտորին, դրանք կկորցվեն վերականգնման ժամանակ, ինչը կարող է հանգեցնել ծրագրի անկման կամ սխալ վարքագծի:
Սխալ եղանակը տվյալներ փոխանցելու համար ֆրագմենտին է Bundle օբյեկտը և setArguments() մեթոդը օգտագործելը: Այս bundle-ը պահվում և վերականգնվում է համակարգի կողմից ֆրագմենտի վերականգնման ժամանակ:
Օրինակ:
Տվյալների փոխանցում:
// Arguments-ով ֆրագմենտ ստեղծելը
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(" բանալի ")
// Օգտագործել "արժեք"
}
}
Այսպիսով, ավտոմատ կերպով պահվում և վերականգնվում են փոխանցված տվյալները համակարգի կողմից ֆրագմենտի վերականգնման ժամանակ։