Boa noite após fazer as alterações da aula minha aplicação não abre mais. Seguem as classes alteradas. Desde já agradeço muito!
package br.com.alura.agenda.dao;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.annotation.NonNull;
import android.widget.Switch;
import java.util.ArrayList;
import java.util.List;
import br.com.alura.agenda.modelo.Aluno;
/**
* Created by caioccatin on 06/06/2017.
*/
public class DAOAlunos extends SQLiteOpenHelper {
public DAOAlunos(Context context) {
super(context, "Agenda", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE Alunos (id INTEGER PRIMARY KEY, nome TEXT NOT NULL, endereco TEXT, telefone TEXT, " +
"site TEXT, nota REAL, CampoFoto TEXT);";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "";
switch (oldVersion){
case 1:
sql = "ALTER TABLE Alunos add colunm CampoFoto TEXT;";
db.execSQL(sql);
}
}
public void insere(Aluno aluno) {
SQLiteDatabase db = getWritableDatabase();
ContentValues dados = pegaDadosAlunos(aluno);
db.insert("Alunos", null, dados);
}
@NonNull
private ContentValues pegaDadosAlunos(Aluno aluno) {
ContentValues dados = new ContentValues();
dados.put("nome",aluno.getNome());
dados.put("endereco", aluno.getEndereco());
dados.put("telefone", aluno.getTelefone());
dados.put("site", aluno.getSite());
dados.put("nota", aluno.getNota());
dados.put("CampoFoto", aluno.getCaminhoFoto());
return dados;
}
public List<Aluno> buscaAlunos() {
SQLiteDatabase db = getReadableDatabase();
String sql = "SELECT * FROM Alunos";
Cursor c = db.rawQuery(sql, null);
List<Aluno> listaalunos = new ArrayList<Aluno>();
while (c.moveToNext()){
Aluno aluno = new Aluno();
aluno.setId(c.getInt(c.getColumnIndex("id")));
aluno.setNome(c.getString(c.getColumnIndex("nome")));
aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));
aluno.setTelefone(c.getString(c.getColumnIndex("telefone")));
aluno.setSite(c.getString(c.getColumnIndex("site")));
aluno.setNota(c.getDouble(c.getColumnIndex("nota")));
aluno.setCaminhoFoto(c.getString(c.getColumnIndex("CampoFoto")));
listaalunos.add(aluno);
}
c.close();
return listaalunos;
}
public void Deleta(Aluno aluno) {
SQLiteDatabase db = getWritableDatabase();
String [] params = {String.valueOf(aluno.getId())};
db.delete("Alunos","id = ?", params);
}
public void altera(Aluno aluno) {
SQLiteDatabase db = getWritableDatabase();
ContentValues dados = pegaDadosAlunos(aluno);
String[] params = {String.valueOf(aluno.getId())};
db.update("Alunos", dados, "id = ?", params);
}
}
package br.com.alura.agenda;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;
import br.com.alura.agenda.modelo.Aluno;
/**
* Created by caioccatin on 05/06/2017.
*/
public class FormularioHelper {
private final EditText nome;
private final EditText endereco;
private final EditText telefone;
private final TextView site;
private final RatingBar nota;
private Aluno aluno;
private ImageView campoFoto ;
public FormularioHelper(FormularioActivity activity) {
nome = (EditText) activity.findViewById(R.id.formulario_nome);
endereco = (EditText) activity.findViewById(R.id.formulario_endereco);
telefone = (EditText) activity.findViewById(R.id.formulario_telefone);
site = (EditText) activity.findViewById(R.id.formulario_site);
nota = (RatingBar) activity.findViewById(R.id.formulario_nota);
campoFoto = (ImageView) activity.findViewById(R.id.formulario_imagem);
aluno = new Aluno();
}
public Aluno pegaAluno(){
aluno.setNome(nome.getText().toString());
aluno.setEndereco(endereco.getText().toString());
aluno.setTelefone(telefone.getText().toString());
aluno.setSite(site.getText().toString());
aluno.setNota(nota.getNumStars());
aluno.setCaminhoFoto((String) campoFoto.getTag());
return aluno;
}
public void preencheFormulario(Aluno aluno) {
nome.setText(aluno.getNome());
endereco.setText(aluno.getEndereco());
telefone.setText(aluno.getTelefone());
site.setText(aluno.getSite());
nota.setProgress((int) aluno.getNota());
carregaFoto(aluno.getCaminhoFoto());
this.aluno = aluno;
}
public void carregaFoto(String caminhoFoto) {
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);
}
}
package br.com.alura.agenda;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.File;
import br.com.alura.agenda.dao.DAOAlunos;
import br.com.alura.agenda.modelo.Aluno;
public class FormularioActivity extends AppCompatActivity {
public static final int CODIGO_CAMERA = 586;
private FormularioHelper helper;
private String caminhoFoto;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario);
helper = new FormularioHelper(this);
Intent intent = getIntent();
Aluno aluno = (Aluno) intent.getSerializableExtra("aluno");
if (aluno != null){
helper.preencheFormulario(aluno);
}
Button btnCamera = (Button) findViewById(R.id.formulario_btncamera);
btnCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intentCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
caminhoFoto = getExternalFilesDir(null) + "/"+ System.currentTimeMillis() + ".jpg";
File ArquivoFoto = new File(caminhoFoto);
intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(ArquivoFoto));
startActivityForResult(intentCamera, CODIGO_CAMERA);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK){
if (requestCode == CODIGO_CAMERA){
//ImageView foto = (ImageView) findViewById(R.id.formulario_imagem);
helper.carregaFoto(caminhoFoto);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().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();
DAOAlunos dao = new DAOAlunos(this);
if (aluno.getId() == 0) {
dao.insere(aluno);
} else {
dao.altera(aluno);
}
dao.close();
Toast.makeText(FormularioActivity.this, "Salvando Aluno:" + aluno.getNome() + "!" , Toast.LENGTH_LONG).show();
finish();
break;
}
return super.onOptionsItemSelected(item);
}
}
package br.com.alura.agenda.modelo;
import java.io.Serializable;
/**
* Created by caioccatin on 05/06/2017.
*/
public class Aluno implements Serializable{
private int id = 0;
private String nome;
private String telefone;
private String endereco;
private String site;
private double nota;
private String caminhoFoto;
public String getSite() {
return site;
}
public void setSite(String site) {
this.site = site;
}
public Integer getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public double getNota() {
return nota;
}
public void setNota(double nota) {
this.nota = nota;
}
@Override
public String toString() {
return this.getId() + " | " + this.getNome();
}
public String getCaminhoFoto() {
return caminhoFoto;
}
public void setCaminhoFoto(String caminhoFoto) {
this.caminhoFoto = caminhoFoto;
}
}