Olá pessoal, tudo bem?
Quando tento rodar o código abaixo, quando tento clicar no contato na MainActivity, ele da erro e quebra o app.
Olhando o logcat, aparece que o erro seria NullPointer no getSeriazable. Quando tento dar um get no nome do contato ele gera um NullPointerException.
Não entendi o motivo, já que criei o objeto Aluno segue o código:
Main:
package br.com.XX.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.List;
import br.com.XX.DAO.AlunoDAO;
import br.com.XX.R;
import br.com.XX.modelo.Aluno;
import static android.widget.Toast.LENGTH_SHORT;
import static android.widget.Toast.makeText;
public class MainActivity extends AppCompatActivity {
private final AlunoDAO dao = new AlunoDAO();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("Minha Agenda");
dao.salva(new Aluno("Alex", "1122223333", "alex@alura.com.br"));
dao.salva(new Aluno("Fran", "1122223333", "fran@gmail.com"));
FloatingActionButton botaoAdicionar = findViewById(R.id.adicionarAluno);
botaoAdicionar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this, CadastrodecontatoActivity.class));
}
});
}
@Override
protected void onResume() {
super.onResume();
ListView ListaDeAlunos = findViewById(R.id.listaDeAlunos);
final List<Aluno> alunos = dao.todos();
ListaDeAlunos.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, alunos));
ListaDeAlunos.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int posicao, long l) {
makeText(MainActivity.this, "" + posicao, LENGTH_SHORT).show();
final Aluno alunoEscolhido = alunos.get(posicao);
final Intent vaiParaCadastro = new Intent(MainActivity.this, CadastrodecontatoActivity.class);
vaiParaCadastro.putExtra("Aluno", alunoEscolhido);
startActivity(vaiParaCadastro);
}
});
}}
CadastroDeContato
package br.com.XX.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import br.com.XX.DAO.AlunoDAO;
import br.com.XX.R;
import br.com.XX.modelo.Aluno;
public class CadastrodecontatoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastro_de_contato);
setTitle("Cadastro de Contato");
final AlunoDAO dao = new AlunoDAO();
final EditText nome = findViewById(R.id.nome);
final EditText email = findViewById(R.id.email);
final EditText telefone = findViewById(R.id.telefone);
Button botaoSalvar = findViewById(R.id.botao_de_cadastro);
Intent dados = getIntent();
Aluno aluno = (Aluno) dados.getSerializableExtra("aluno");
nome.setText(aluno.getNomeDoContato());
email.setText(aluno.getEmailDoContato());
telefone.setText(aluno.getTelefoneDoContato());
// COLOCAR O LISTENER PARA CAPTURAR AS AÇÕES DO BOTAO
botaoSalvar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String nomeDoContato = nome.getText().toString();
String emailDoContato = email.getText().toString();
String telefoneDoContato = telefone.getText().toString();
Aluno alunoCriado = new Aluno(nomeDoContato, emailDoContato, telefoneDoContato);
dao.salva(alunoCriado);
finish();
}
});
}
}
Podem me ajudar?