Erros ao fim da aula 2 com relação a câmera (no vídeo 1, que é só a criação de design tudo funcionou. No vídeo 2 aonde as funções do botão são implementadas e você pode tirar a foto de fato, só ao registrar a foto o apk parava de funcionar, a partir do vídeo 3 aonde a foto é salva na memoria, o apk nem executa mais e o emulador já abre dizendo que a agenda crashou se deseja abrir novamente. PS: Já segui as devidas correções e adaptações pro Android 7 e atualmente estou no Android 8 em minha maquina virtual.
Logcat: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. ... at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3621) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2862) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) 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) at android.database.CursorWindow.nativeGetString(Native Method) at android.database.CursorWindow.getString(CursorWindow.java:438) at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51) at com.tales.agenda.DAO.AlunoDAO.buscaAlunos(AlunoDAO.java:78) at com.tales.agenda.ListaAlunosActivity.carregaLista(ListaAlunosActivity.java:62) at com.tales.agenda.ListaAlunosActivity.onResume(ListaAlunosActivity.java:72) ...Linha relacionada ao AlunoDAO java 78: aluno.setFoto(c.getString(c.getColumnIndex("caminhoFoto")));
Relacionado ao ListaAlunos java 62: AlunoDAO dao = new AlunoDAO(this); List alunos = dao.buscaAlunos();
Relacionado ao ListaAlunos 72: carregaLista();
Codigo do AlunoDAO: public class AlunoDAO extends SQLiteOpenHelper { public AlunoDAO (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, caminhoFoto 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 COLUMN caminhoFoto TEXT"; } db.execSQL(sql); } public void insert(Aluno aluno) { SQLiteDatabase db = getWritableDatabase(); ContentValues dados = pegaDadosAluno(aluno); db.insert("Alunos", null, dados ); } @NonNull private ContentValues pegaDadosAluno(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("caminhoFoto", aluno.getFoto()); return dados; } public List buscaAlunos() { String sql = "SELECT * FROM Alunos;"; SQLiteDatabase db = getReadableDatabase(); Cursor c = db.rawQuery(sql, null); List alunos = new ArrayList(); while (c.moveToNext()) { Aluno aluno = new Aluno(); aluno.setId(c.getLong(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.setFoto(c.getString(c.getColumnIndex("caminhoFoto")));
alunos.add(aluno); } //fecha conexao com o banco de dados c.close(); //retorna os alunos colhidos return alunos; } public void delet(Aluno aluno) { SQLiteDatabase db = getWritableDatabase(); String [] params = {String.valueOf(aluno.getId())};injection passando uma lista de parametros por string db.delete("Alunos", "id = ?", params); } public void alter(Aluno aluno) { SQLiteDatabase db = getWritableDatabase();
ContentValues dados = pegaDadosAluno(aluno);
String[] params ={aluno.getId().toString()}; db.update("Alunos", dados, "id = ?", params); } }