添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Referente ao curso Android com Kotlin: personalize o seu app , no capítulo Finalizando o projeto e atividade Desafio: Tela de detalhes

Bom dia a todos Ao replicar o código desse desafio, percebi que o método getParcelableExtra() estava deprecated e ganhou uma versão nova versão. Jeito antigo:

class DetalhesProdutoActivity : AppCompatActivity() {
//outros métodos e properties ocultados
    private fun tentaCarregarProduto() {
        intent.getParcelableExtra<Produto>(CHAVE_PRODUTO)?.let { produtoCarregado ->
            preencheCampos(produtoCarregado)
        } ?: finish()
    }

Agora para fazer o método novo, eu conferi esse fórum . Detalhe: como o getParcelableExtra() novo só funciona na versão igual ou acima do compileSdkVersion 33, precisamos adicionar um if que verifica a versão do compilador. Fica desse jeito:

class DetalhesProdutoActivity : AppCompatActivity() {
//outros métodos e properties ocultados
    private fun tentaCarregarProduto() {
    //verificação de versão do compilador do SDK
        val userData = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        //método novo para os SDK mais novos
            intent.getParcelableExtra(CHAVE_PRODUTO,Produto::class.java)
        } else{
        //método deprecated  para os SDK mais antigos
            intent.getParcelableExtra<Produto>(CHAVE_PRODUTO)
        userData?.let { produtoCarregado ->
            preencheCampos(produtoCarregado)
        }?: finish()
    }

O código funcionou para mim desse jeito

Se tiver uma sugestão de melhoria ou correção (tanto no código, quanto na explicação), pode falar nos comentários

Oi Murilo, tudo bem?

Muito obrigada por compartilhar sua descoberta e solução para o problema com o método getParcelableExtra() deprecated. É sempre importante mantermos nossos códigos atualizados e funcionando corretamente.

Sua solução parece estar correta e bem explicada. É interessante ver como você verificou a versão do compilador do SDK antes de escolher qual método utilizar. Isso garante que o código funcionará corretamente em diferentes versões do Android.

Não tenho nenhuma sugestão de melhoria ou correção para o seu código. Apenas gostaria de agradecer por compartilhar sua solução conosco e ajudar a comunidade a aprender mais sobre programação para Android.

Um abraço e bons estudos.