Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

getDrawable() deprecated

O instrutor utilizou este código para pegar a imagem:

ImageView imagem = viewCriada.findViewById(R.id.item_pacote_imagem);
        Resources resources = context.getResources();
        int idDoDrawable = resources.getIdentifier(pacote.getImagem(), "drawable", context.getPackageName());
        Drawable drawableImagemPacote = resources.getDrawable(idDoDrawable);
        imagem.setImageDrawable(drawableImagemPacote);

Ele funciona, mas o getDrawable está depreciado (getDrawable(int)' is deprecated as of API 22: Android 5.1 (Lollipop) ). Ele recomenda o ResourcesCompat.getDrawable. Então modifiquei o código para o que está abaixo, mas dá crash na aplicação, o que está errado?

ImageView imagem = viewCriada.findViewById(R.id.item_pacote_imagem);
        Resources resources = context.getResources();
        Resources.Theme theme = new ListaPacotesActivity().getTheme();
        int idDoDrawable = resources.getIdentifier(pacote.getImagem(), "drawable", context.getPackageName());
        Drawable drawableImagemPacote = ResourcesCompat.getDrawable(resources, idDoDrawable, theme);
        imagem.setImageDrawable(drawableImagemPacote);
3 respostas

Olá Antonio, Poderia mandar a mensagem da Exception para facilitar a analise do problema?

Não tem exception. Simplesmente o aplicativo não abre no emulador.

solução!

Olá novamente,

Primeiramente verifique se a API do seu projeto e do Android que está utilizando são superiores a API 22.

Depois, tente fazer as seguintes modificações em seu código:

 ImageView imagem = viewCriada.findViewById(R.id.item_pacote_imagem);
        Resources resources = context.getResources();
        int idDoDrawable = resources.getIdentifier(pacote.getImagem(), "drawable", context.getPackageName());
        Drawable drawableImagemPacote = ResourcesCompat.getDrawable(resources, idDoDrawable, null);
        imagem.setImageDrawable(drawableImagemPacote);

Ao invés de pegar o Theme da ListaPacotesActivity, apenas coloque null como parâmetro. Não sei dizer se isso realmente é a forma correta de se fazer isso, mas acho que vai resolver o problema.

Espero que isso ajude!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software