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

Erro ao salvar alterações ou criar aluno sem foto

Olá, não estou conseguindo salvar as edições ou criar aluno que estiver sem foto. Ao tentar essas funcionalidades é lançada uma exceção e minha aplicação para de rodar. O erro: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference

Acredito que seja devido o uso do caminhoFoto que está nulo, mas tenho dúvida do que poderia colocar para deixar a foto padrão.

Este é meu FormularioHelper:

public class FormularioHelper {
    private Aluno aluno;
    private EditText campoNome;
    private EditText campoEndereco;
    private EditText campoTelefone;
    private EditText campoSite;
    private RatingBar campoNota;
    private ImageView campoFoto;

    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 getAluno(){
        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(campoFoto.getTag().toString());
        return aluno;
    }

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

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

Espero que me ajudem a solucionar o caso e desde já agradeço.

5 respostas

Fala aí Jeferson, tudo bem ?

Pelo que vi do seu código, aparentemente ele está correto.

Para te ajudar precisaria saber qual é o erro que está acontecendo ai, consegue pegar essa informação no LogCat e passar para gente ?

Olá, Matheus. Estou bem e você?

Como pedido, estou mandando a informação de erro que aparece no LogCat:

07-28 03:05:17.307 24734-24734/com.example.jefacb10.agenda E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: com.example.jefacb10.agenda, PID: 24734
                                                                             java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
                                                                                 at com.example.jefacb10.agenda.FormularioHelper.getAluno(FormularioHelper.java:41)
                                                                                 at com.example.jefacb10.agenda.FormularioActivity.onOptionsItemSelected(FormularioActivity.java:78)
                                                                                 at android.app.Activity.onMenuItemSelected(Activity.java:3219)
                                                                                 at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:406)
                                                                                 at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
                                                                                 at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
                                                                                 at android.support.v7.app.AppCompatDelegateImplV9.onMenuItemSelected(AppCompatDelegateImplV9.java:667)
                                                                                 at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
                                                                                 at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
                                                                                 at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
                                                                                 at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
                                                                                 at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:616)
                                                                                 at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:153)
                                                                                 at android.view.View.performClick(View.java:5714)
                                                                                 at android.widget.TextView.performClick(TextView.java:10926)
                                                                                 at android.view.View$PerformClick.run(View.java:22589)
                                                                                 at android.os.Handler.handleCallback(Handler.java:739)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                 at android.os.Looper.loop(Looper.java:148)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:7325)
                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

Após a aplicação parar, ela volta para a Activity de ListaAlunos sem as alterações ou dados preenchidos do novo aluno só pelo mesmo estar sem foto.

solução!

Oi Jeferson, tudo bem ?

O problema está sendo nessa linha :

aluno.setCaminhoFoto(campoFoto.getTag().toString());

O campo pode estar sem nenhum valor, ai o erro é gerado.

Receio que basta você remover a invocação do método toString :

aluno.setCaminhoFoto((String)campoFoto.getTag());

Faz o teste e fala para gente :)

Após a alteração o problema foi solucionado com sucesso. Agradeço sua ajuda.

O que precisar é só abrir um novo tópico :D

Bons estudos

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