Junior — Middle
Може ли да се реализира използването на аргументи в конструктора за Fragment в Android?
sobes.tech AI
Отговор от AI
В Android не се препоръчва да използвате конструктори с аргументи за Fragment, тъй като системата може по всяко време да пресъздаде фрагмента, като извика конструктор без параметри.
Правилният начин за предаване на данни към Fragment е да използвате метода setArguments(Bundle) и да получавате данните чрез getArguments() вътре във фрагмента.
Пример за създаване на фрагмент с аргументи:
class MyFragment : Fragment() {
companion object {
private const val ARG_PARAM = "param"
fun newInstance(param: String): MyFragment {
val fragment = MyFragment()
val args = Bundle()
args.putString(ARG_PARAM, param)
fragment.arguments = args
return fragment
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val param = arguments?.getString(ARG_PARAM)
// Използвайте param
}
}
По този начин данните се съхраняват в Bundle и се възстановяват правилно от системата при пресъздаване на фрагмента.