Concluir todas as aulas de android 1 e estava testando o emulador quando descobrir um bug. quando clico no botão "+" para mudar de activity Lista_Aluno para Formulário o emulador dar a mensagem "Unfortunately, Agenda has stopped" e o aplicativo fecha, quando tento alterar a lista ou apagar o conteúdo dela funciona perfeitamente, mas ao tentar adicionar esse bug acontece.
package com.example.costa.agenda;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import com.example.costa.agenda.DAO.AlunoDao;
import com.example.costa.agenda.modelo.Aluno;
import java.util.List;
public class ListaAlunoActivity extends AppCompatActivity {
private ListView listaAlunos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_aluno);
listaAlunos = (ListView) findViewById(R.id.lista_alunos);
listaAlunos.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> lista, View item, int position, long id) {
Aluno alunos = (Aluno) listaAlunos.getItemAtPosition(position);
Intent intentVaiProFormulario = new Intent(ListaAlunoActivity.this, FormularioActivity.class);
intentVaiProFormulario.putExtra("aluno",alunos);
startActivity(intentVaiProFormulario);
}
});
Button novoAluno = (Button) findViewById(R.id.novo_aluno);
novoAluno.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intentVaiProFormulario = new Intent(ListaAlunoActivity.this, FormularioActivity.class);
startActivity(intentVaiProFormulario);
}
});
registerForContextMenu(listaAlunos);
}
@Override
protected void onResume() {
super.onResume();
carregarLista();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, final ContextMenu.ContextMenuInfo menuInfo) {
MenuItem deletar = menu.add("Deletar");
deletar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
Aluno aluno = (Aluno) listaAlunos.getItemAtPosition(info.position);
AlunoDao dao = new AlunoDao(ListaAlunoActivity.this);
dao.deleta(aluno);
dao.close();
carregarLista();
return false;
}
});
}private void carregarLista() {
AlunoDao dao = new AlunoDao(this);
List<Aluno> alunos = dao.buscaAlunos();
dao.close();
ArrayAdapter<Aluno> adapter =
new ArrayAdapter<Aluno>(this,android.R.layout.simple_list_item_1 , alunos);
listaAlunos.setAdapter(adapter);
}
}
package com.example.costa.agenda;
import android.widget.EditText;
import android.widget.RatingBar;
import com.example.costa.agenda.modelo.Aluno;
/**
* Created by costa on 30/03/2017.
*/
public class FormularioAjuda {
private final EditText campoNome;
private final EditText campoEndereco;
private final EditText campoEmail;
private final EditText campoSite;
private final EditText campoTelefone;
private final RatingBar campoNota;
private Aluno aluno;
public FormularioAjuda(FormularioActivity activity) {
campoNome = (EditText) activity.findViewById(R.id.formulario_nome);
campoEndereco = (EditText) activity.findViewById(R.id.formulario_endereco);
campoEmail = (EditText) activity.findViewById(R.id.formulario_email);
campoSite = (EditText) activity.findViewById(R.id.formulario_site);
campoTelefone = (EditText) activity.findViewById(R.id.formulario_telefone);
campoNota = (RatingBar) activity.findViewById(R.id.formulario_nota);
aluno = new Aluno();
}
public Aluno pegaAluno() {
aluno.setNome(campoNome.getText().toString());
aluno.setEmail(campoEmail.getText().toString());
aluno.setEndereco(campoEndereco.getText().toString());
aluno.setNota(Double.valueOf(campoNota.getProgress()));
aluno.setSite(campoSite.toString());
aluno.setTelefone(campoTelefone.getText().toString());
return aluno;
}
public void preencherFormulario(Aluno aluno) {
campoNome.setText(aluno.getNome());
campoEmail.setText(aluno.getEmail());
campoEndereco.setText(aluno.getEndereco());
campoNota.setProgress(aluno.getNota().intValue());
campoSite.setText(aluno.getSite());
campoTelefone.setText(aluno.getTelefone());
this.aluno = aluno;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/lista_alunos"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:layout_width="56dp"
android:layout_height="56dp"
android:text="+"
android:textColor="#fff"
android:textSize="40sp"
android:elevation="6dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp"
android:background="@drawable/fundo"
android:stateListAnimator="@null"
android:id="@+id/novo_aluno"/>
</RelativeLayout>