Sobes.tech
Junior — Middle

Bir Fragment'in yapıcı fonksiyonunu çağırarak oluşturulmasının nedenleri nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bir Fragment'i doğrudan yapıcı (constructor) kullanarak oluşturmak birkaç nedenle yanlıştır:

  • Bundle aracılığıyla argümanların iletilmemesi. Bir fragment oluştururken, parametreleri Bundle içine koyan ve setArguments() ile ayarlayan statik newInstance() metodunun kullanılması önerilir. Bu, sistem tarafından (örneğin ekran döndürme sırasında) yeniden oluşturulduğunda parametrelerin korunmasını sağlar.

  • Durumun geri yüklenmesiyle ilgili sorunlar. Fragmentler, parametresiz yapıcı (constructor) kullanılarak Android sistemi tarafından yeniden oluşturulabilir. Parametrelerle özel bir yapıcı kullanırsanız, sistem fragmenti doğru şekilde geri yükleyemez.

  • Yaşam döngüsü ihlali. Android, fragmentlerin parametresiz ve genel bir yapıcıya sahip olmasını bekler. Diğer yapıcıların kullanılması, durumun geri yüklenmesinde hatalara yol açabilir.

Doğru fragment oluşturma örneği:

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")
        // parametreyi kullan
    }
}

Bu şekilde, yapıcı kullanarak fragment oluşturmak önerilere aykırıdır ve uygulama çalışmasında hatalara yol açabilir.