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ç