GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

(android) Classe R, endereçamento de drawables e SQLitedatabase

back-end
programação
android
mysql
java
Tags: #<Tag:0x00007f52c1cb5848> #<Tag:0x00007f52c1cb5410> #<Tag:0x00007f52c1cb4f88> #<Tag:0x00007f52c1cb4b00> #<Tag:0x00007f52c1cb48a8>

#1

Olá tenho um app que usa com um objeto chamado Categoria, esse objeto tem três atributos: Nome , Uid (id única), e Ícone. O usuário pode editar nome e ícone desse objeto e criar quantos bem entender do mesmo. Pra persistir eu escrevo todos os dados no banco de dados é ai que começa o problema. Em alguns casos específicos os ícones de todas as categorias se embaralham e/ou as categorias recebem qualquer icone da pasta drawable. O ícone é setado dessa forma:

         public void setIcone(int icone){ 
         // passando R.drawable.iconeQueOusuarioEscolheu
                this.icone=icone;     }

Já revisei tudo relacionado a mudança de icones no código, rastreei e analizei cada método que usa o setIcone(); como não achei nada, configurei o metodo setIcone(); para gerar um log dos metodos que usam e oquais alteraçoes esses metodos fazem:

        public void setIcone(int icone, String quem) {
              trackThisBug(quem, getIcone(), icone);
                 this.icone = icone;
                                         }
                   private void trackThisBug(String quem, int oldIcon, int newIcon) {
               Calendar c = Calendar.getInstance();
            try {
              String dir = Environment.getExternalStorageDirectory() + "/patternDir/BugLog.txt";
               FileWriter writer = new FileWriter(dir, true);
                 writer.write(quem + " alterou o icone de " + getNome() + " de " + oldIcon + " para " + newIcon +
                " As " + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + " em " +    
              c.get(Calendar.DAY_OF_MONTH)+1 + "/" + c.get(Calendar.MONTH)+"\n\n");
            writer.flush();
                 writer.close();
         } catch (IOException e) {
        e.printStackTrace();
    }
}

Observando esse log reparei que quem altera os ícones é o metodo que lê as categorias do banco de dados

               if (c.moveToFirst()) {
                         do {
                     Categoria cat = new Categoria();
                       cat.setNome(c.getString(0));
                     cat.setUid(c.getString(1));
                   cat.setIcone(c.getInt(2), "lendo todas as categorias na classe READ"); // bem nessa linha
                      array.add(cat);
                    } while (c.moveToNext());
              }

Eu peguei o valor que ele setou como ícone nas categorias e fui na classe R ver oque era e não existia nenhum recurso com a id setada, não sei se a id dos recursos muda ou mas no momento é a minha única tese.
Senhores, procuro sugestões sobre como resolver o problema e caso conheçam um jeito melhor de armazenar ícones em objetos e queiram compartilhar ficarei grato, desde já obrigado!