Sobes.tech
Junior — Middle

Чаро дар усули эҷоди Fragment аргументҳо дода мешаванд ва ин чӣ гуна ба кори он таъсир мерасонад?

sobes.tech AI

Ҷавоб аз AI

Дар Android, барои гузаронидани маълумотҳо ба Fragment дар вақти эҷоди он, одатан усули setArguments(Bundle) истифода мешавад. Ин имкон медиҳад, ки далелҳоро муайян кунед, ки фрагмент метавонад дар ҳар вақти ҳаёти худ тавассути getArguments() гирад.

Гузаронидани далелҳо тавассути Bundle муҳим аст, зеро:

  • Далелҳо аз ҷониби системаи нигоҳ дошта мешаванд ва ҳангоми барқарор кардани дубораи фрагмент (масалан, дар вақти гардиши экран) барқарор мешаванд.
  • Ин кафолат медиҳад, ки ҳолати фрагмент дуруст барқарор мешавад бе ниёз ба нигоҳ доштани маълумот дар майдонҳои номустабил.
  • Имкон медиҳад, ки фрагментҳо бо параметрҳои гуногун сохта шаванд, ки онҳоро бештар универсалӣ мекунад.

Масалан, сохтан ва гузоштани далелҳо дар фрагмент:

class MyFragment : Fragment() {
    companion object {
        private const val ARG_USER_ID = "user_id"

        fun newInstance(userId: Int): MyFragment {
            val fragment = MyFragment()
            val args = Bundle()
            args.putInt(ARG_USER_ID, userId)
            fragment.arguments = args
            return fragment
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val userId = arguments?.getInt(ARG_USER_ID) ?: 0
        // Истифодаи userId
    }
}

Инчунин, далелҳо бехатар ва қулай барои интиқол ва нигоҳ доштани маълумот дар фрагмент ва ҳангоми барқарор кардани он таъмин мекунанд.