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

Problema com o getDrawable

Olá, bom dia. Estava fazendo a aula do curso Formação Android > Curso layouts android Part 1 e me deparei com um erro. Quando executo o app ele renderiza normalmente, porem quando eu dou scroll na tela para ver os outros pacotes o android se perde nos ids e crasha.

Obs: Já vi esse mesmo erro em outros tópicos. Já tentei as duas soluções que vi sendo comentadas tanto essa:

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);

quanto essa:


    private Drawable devolveDrawble(Pacote pacote) {
        Resources resources = context.getResources();
        int idDrawble = resources.getIdentifier(pacote.getImagem(), "drawble", context.getPackageName());
        Resources.Theme tema = ((Activity)context).getTheme();
        Drawable drawableImagemPacote = resources.getDrawable(idDrawble, tema);
        return drawableImagemPacote;
    }

Porem ele sempre se perde nos ids quando move a tela.

Segue o log do erro:

2022-07-28 13:13:08.610 4911-4911/com.alura.aluraviagens E/InputEventReceiver: Exception dispatching input event. 2022-07-28 13:13:08.611 4911-4911/com.alura.aluraviagens E/AndroidRuntime: FATAL EXCEPTION: main Process: com.alura.aluraviagens, PID: 4911 android.content.res.Resources$NotFoundException: Resource ID #0x0 at android.content.res.Resources.getValue(Resources.java:1351) at android.content.res.Resources.getDrawable(Resources.java:804) at com.alura.aluraviagens.ui.adapter.ListaPacotesAdapter.getView(ListaPacotesAdapter.java:65)

4 respostas

Fala Felipe, de boa ?

Cara tu digitou errado, super normal.. ainda mais no erro que tu caiu, digitar uma string hehe

        int idDrawble = resources.getIdentifier(pacote.getImagem(), "drawble", context.getPackageName());

tu escreveu drawble o correto é drawable

Não, eu digitei certo e mesmo assim não funciona! Está errado ali em cima, pois copiei do tópico onde vi as respostas para colocar no post.

Meu código está assim!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Fala Felipe, Tenta trocar:

Drawable drawableImagemPacote = ResourcesCompat.getDrawable(resources, idDoDrawable, null);

ou

Drawable drawableImagemPacote = resources.getDrawable(idDrawble, tema);

Por

Drawable drawableImgLocal = resources.getDrawable( idDoDrawable);

Aqui no meu e na página de explicação da aula não precisou colocar "tema" no "getDrawable".

https://cursos.alura.com.br/course/layout-android-1/task/33700 Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá Renan, é que na versão atual diz que esse código usado no curso esta obsoleto (e acontece o mesmo problema usando essa versão). Na documentação do android diz que é para passar o tema tbm por isso.

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