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

Aplicação parou de Funcionar após a aula 4

Minha aplicação estava em total funcionamento até a aula 3 (ele chamava duas telas e preenchia dados em um formulário com botões customizados) mas após o 1º vídeo da aula 4, aonde criamos a classe Aluno e FormularioHelper e aquela taost com o nome do aluno cadastrado, a aplicação para de funcionar. Vale dizer que a aplicação não acusa erro ao compilar o código em nenhum momento e só ocorre o Break do programa (parando de funcionar) quando o aplicativo passa a executar o botão salvar na tela FormularioActivity. Já revisei o código e ele está igual ao do vídeo. Segue o código pra analise. ``` Classe Aluno: package com.tales.agenda.Model; public class Aluno { private Long id; private String nome; private String endereco; private String telefone; private String site; private Double nota;

public Long getId() { return id; }

public void setId(Long id) { this.id = id; }

public String getNome() { return nome; }

public void setNome(String nome) { this.nome = nome; }

public String getEndereco() { return endereco; }

public void setEndereco(String endereco) { this.endereco = endereco; }

public String getTelefone() { return telefone; }

public void setTelefone(String telefone) { this.telefone = telefone; }

public String getSite() { return site; }

public void setSite(String site) { this.site = site; }

public Double getNota() { return nota; }

public void setNota(Double nota) { this.nota = nota; } }

Classe FormularioActivity package com.tales.agenda; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; import com.tales.agenda.Model.Aluno;

public class FormularioActivity extends AppCompatActivity {

private FormularioHelper helper;

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_formulario); helper = new FormularioHelper(this); }

@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_formulario, menu); return super.onCreateOptionsMenu(menu); }

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_formulario_ok: Aluno aluno = helper.pegaAluno(); Toast.makeText(FormularioActivity.this, "Aluno" + aluno.getNome() + "salvo!", Toast.LENGTH_SHORT).show();

finish(); break; }

return super.onOptionsItemSelected(item); } }

Classe FormularioHelper package com.tales.agenda; import android.widget.EditText; import android.widget.RatingBar; import com.tales.agenda.Model.Aluno;

public class FormularioHelper { private EditText campoNome; private EditText campoEndereco; private EditText campoTelefone; private EditText campoSite; private RatingBar campoNota;

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); }

public Aluno pegaAluno() { Aluno aluno = new Aluno (); 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())); return aluno; } }

6 respostas

Tales, de boa ?

Cara conseguem mostrar para gente qual é a Exception que está aparecendo no logcat ?

São meus primeiros contatos com o Android, consegue me informar o que é o LogCat?

Tales, é o console basicamente

Ok, tenho essas mensagens Logcat (vale citar que refiz todo o programa do zero e me encontrei na mesma situação):

5954/com.tales.agenda E/AndroidRuntime: FATAL EXCEPTION: main

   Process: com.tales.agenda, PID: 5954
                                                                java.lang.NullPointerException: Attempt to invoke virtual method 'com.tales.agenda.Model.Aluno com.tales.agenda.FormularioHelper.pegaAluno()' on a null object reference
      at com.tales.agenda.FormularioActivity.onOptionsItemSelected(FormularioActivity.java:33)
    at android.app.Activity.onMenuItemSelected(Activity.java:3450)
    at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:368)
    at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
    at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
      at android.support.v7.app.AppCompatDelegateImplV9.onMenuItemSelected(AppCompatDelegateImplV9.java:674)
     at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
      at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
      at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
      at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:963)
     at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:624)
     at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:150)
      at android.view.View.performClick(View.java:6294)
       at android.view.View$PerformClick.run(View.java:24770)
       at android.os.Handler.handleCallback(Handler.java:790)
       at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
         at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
03-12 14:00:17.368 5954-5962/com.tales.agenda I/zygote: Debugger is no longer active
solução!

Seu erro foi um nullpointer, ou seja, alguma coisa está nula.

Nesse seu caso pelo que vi, você acabou esquecendo de criar uma instância do seu helper na sua activity.

sim sim, eu notei isso agora enquanto reolhava a video aula, já recoloquei (inclusive editei a parte aonde eu descrevo o problema e envio o meu fonte). Mesmo após corrigir, continuava aparecendo um novo erro e a aplicação nem iniciava então reiniciei o AndroidStudio, esperei tudo ser carregado certinho e aparentemente agora foi, tive problemas com essa aplicação após fazer todas as aulas, não só essa primeira então retornei refazendo a atividade e tive esse problema já na primeira aula. Então possivelmente eu irei voltar com mais problemas até o fim dos próximos mais 4 videos que estão por vir. Em todo caso fico grato pela ajuda e pela velocidade ao responder a minha duvida contando de hoje. Ótima tarde