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

Como salvar fotos (Dúvida)

Olá,

No modelo estamos salvando somente o caminho para a foto que está salva no aparelho do usuário. Mas o que acontece se o usuário mudar de aparelho ou de alguma forma excluí a foto? Aquele caminho ainda vai estar gravado no banco e acredito que isso pode gerar um NullPointer na aplicação. Poderiamos fazer uma verificação primeiro para ver se o arquivo ainda existe no caminho especificado, no caso quando entramos no formulário para edição?

2 respostas
solução!

Ola Janaina

Nos dois pontos que carregamos imagens, fazemos uma validação.

if (caminhoFoto != null) {
            Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto);
            Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 100, 100, true);
            campoFoto.setImageBitmap(bitmapReduzido);
            campoFoto.setScaleType(ImageView.ScaleType.FIT_XY);
        }

Este if, só vai verificar se a String que referência o caminho da foto, é nula. Mas realmente, ainda existe a possibilidade de ter um caminho para a foto no banco, mas a foto não existir neste caminho. (pode ter sido apagada como você disse). E realmente vamos tomar um NullPointer :/

De acordo com a documentação, o método BitmapFactory.decodeFile(), "decodifica um caminho de arquivo em um bitmap. Se o nome do arquivo especificado for nulo ou não puder ser decodificado em um bitmap, a função retornará nulo".

Uma possível solução, seria verificar o retorno deste método. assim teríamos certeza que temos uma foto válida:

if (caminhoFoto != null) {
            Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto);
            if(bitmap != null) {
                Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 300, 300, true);
                campoFoto.setImageBitmap(bitmapReduzido);
                campoFoto.setScaleType(ImageView.ScaleType.FIT_XY);
                campoFoto.setTag(caminhoFoto);
            }
        }

Espero que eu tenha conseguido responder sua pergunta :)

abç

Bom dia,

Conseguiu responder sim, obrigada.