Junior — Middle
Կարող է վստահ լինել, որ պարամետրերի փոփոխության ժամանակ հենց օգտագործողի կոնստրուկտորը կկանչվի?
sobes.tech AI
Պատասխան AI-ից
Ոչ, հնարավոր չէ վստահ լինել, որ պարամետրերը փոխելու ժամանակ հենց օգտագործողի ֆրագմենտի կոնստրուկտորը կկանչվի:
Android համակարգը կարող է վերականգնել ֆրագմենտները առանց պարամետրերի (նույնպես՝ ստանդարտ), հատկապես կարգավորումների փոփոխությունից հետո (օրինակ՝ էկրանին պտտում):
Հետևաբար, խորհուրդ է տրվում՝
- Օգտագործել պարամետրեր չպարունակող ստանդարտ կոնստրուկտորը:
- Պարամետրերը փոխանցել
Bundle-ի միջոցովsetArguments()մեթոդով: - Պարամետրերը դուրս բերել
onCreate()կամonCreateView()մեթոդներումgetArguments()-ից:
Այսպիսով, համակարգը կարող է ճիշտ վերականգնել ֆրագմենտի վիճակը:
Օրինակ՝
class MyFragment : Fragment() {
companion object {
fun newInstance(param: String): MyFragment {
val fragment = MyFragment()
val args = Bundle()
args.putString("param_key", param)
fragment.arguments = args
return fragment
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val param = arguments?.getString("param_key")
// Օգտագործել param
}
}