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

Ao tentar editar outros usuarios da lista ele retorna "O app parou"

package com.br.agenda;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RatingBar;

import com.br.agenda.modelo.Aluno;

public class FormularioHelper {

    private final EditText campoNome;
    private final EditText campoEndereco;
    private  final EditText campoTelefone;
    private final  EditText campoSite;
    private final RatingBar campoNota;
    private final ImageView campoFoto;

    private Aluno aluno;

    public FormularioHelper(FormularioActivity activity) {

       campoNome = (EditText) activity.findViewById(R.id.formulario_nome);
       campoEndereco = (EditText) activity.findViewById(R.id.formulario_endereco);
       campoTelefone = (EditText) activity.findViewById(R.id.formulario_telefone);
       campoSite = (EditText) activity.findViewById(R.id.formulario_site);
       campoNota = (RatingBar) activity.findViewById(R.id.formulario_nota);
       campoFoto = (ImageView) activity.findViewById(R.id.formulario_foto);
       aluno = new Aluno();

    }


    public Aluno pegarAluno() {

        aluno.setNome(campoNome.getText().toString());
        aluno.setEndereco(campoEndereco.getText().toString());
        aluno.setTelefone(campoTelefone.getText().toString());
        aluno.setSite(campoSite.getText().toString());
        aluno.setNota(Double.valueOf(campoNota.getProgress()));
        aluno.setCaminhoFoto((String) campoFoto.getTag());
        return aluno;
    }

    public void preencheFormulario(Aluno aluno) {
        this.aluno = aluno;
        campoNome.setText(aluno.getNome());
        campoEndereco.setText(aluno.getEndereco());
        campoTelefone.setText(aluno.getTelefone());
        campoSite.setText(aluno.getSite());
        campoNota.setProgress(aluno.getNota().intValue());
        carregaImage(aluno.getCaminhoFoto());
        this.aluno = aluno;



    }

    public void carregaImage(String caminhoFoto) {

        Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto);
        Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 300, 300, true);
        campoFoto.setImageBitmap(bitmap);
        campoFoto.setScaleType(ImageView.ScaleType.FIT_XY);
        campoFoto.setTag(caminhoFoto);
    }
}
3 respostas

Qual o erro que ocorre ao adicionar a foto? Isso ocorre devido alguma exceção que foi lançada. Envia o log com o erro que fica mais fácil de ajudar.

08-13 11:42:40.481 31183-31183/com.br.agenda E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.br.agenda, PID: 31183
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.br.agenda/com.br.agenda.FormularioActivity}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2319)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2370)
        at android.app.ActivityThread.access$800(ActivityThread.java:155)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5426)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
        at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:619)
        at com.br.agenda.FormularioHelper.carregaImage(FormularioHelper.java:63)
        at com.br.agenda.FormularioHelper.preencheFormulario(FormularioHelper.java:53)
        at com.br.agenda.FormularioActivity.onCreate(FormularioActivity.java:41)
        at android.app.Activity.performCreate(Activity.java:5296)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2283)
solução!

Acredito que no método carregaImagem() o parâmetro caminhoFoto está vindo vazio por isso gera NullPointerException.Um simples if resolve a exceção:

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

Se o problema persistir é porque o erro está na chamada do método, nesse caso teria que ver sua classe FormularioActivity rsrs.