Quais razões tornam incorreta a criação de um Fragment através da chamada ao seu construtor?
sobes.tech IA
Resposta da IA
Criar um Fragment diretamente através do construtor está incorreto por várias razões:
-
Falta de passagem de argumentos através do Bundle. Ao criar um fragmento, recomenda-se usar o método estático
newInstance(), que coloca os parâmetros numBundlee os define através desetArguments(). Isto garante que, ao ser recriado pelo sistema (por exemplo, ao rodar a tela), os parâmetros sejam preservados. -
Problemas com a restauração do estado. Os fragmentos podem ser recriados pelo sistema Android através de um construtor sem parâmetros. Se usar um construtor não padrão com parâmetros, o sistema não conseguirá restaurar corretamente o fragmento.
-
Violação do ciclo de vida. O Android espera que os fragmentos tenham um construtor público sem parâmetros. Usar outros construtores pode causar erros na restauração do estado.
Exemplo de criação correta de um fragmento:
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")
// Usar param
}
}
Assim, criar um fragmento através do construtor viola as recomendações e pode levar a erros ao trabalhar com a aplicação.