The following error is occurring in my application and I can not resolve it. Can you help me ?
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.sala304b.padariacoimbra, PID: 15159 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sala304b.padariacoimbra/com.example.sala304b.padariacoimbra.view.EditarActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460) at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136) at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68) at com.example.sala304b.padariacoimbra.repository.UsuarioRepository.GetUsuario(UsuarioRepository.java:87) at com.example.sala304b.padariacoimbra.view.EditarActivity.CarregaValoresCampos(EditarActivity.java:197) at com.example.sala304b.padariacoimbra.view.EditarActivity.onCreate(EditarActivity.java:40) at android.app.Activity.performCreate(Activity.java:6956) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Here are the codes that I believe contain the error.
UserRepository class:
package com.example.sala304b.padariacoimbra.repository;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import com.example.sala304b.padariacoimbra.dao.UsuarioDao;
import com.example.sala304b.padariacoimbra.model.Usuario;
import java.util.ArrayList;
import java.util.List;
public class UsuarioRepository {
UsuarioDao usuarioDao;
public UsuarioRepository(Context context){
usuarioDao = new UsuarioDao(context);
}
/***
* SALVA UM NOVO REGISTRO NA BASE DE DADOS
*/
public void Salvar(Usuario pessoaModel){
ContentValues contentValues = new ContentValues();
/*MONTANDO OS PARAMETROS PARA SEREM SALVOS*/
contentValues.put("usuario_usuario", pessoaModel.getUsuario());
contentValues.put("senha_usuario", pessoaModel.getSenha());
contentValues.put("nome_usuario", pessoaModel.getNome());
contentValues.put("telefone_usuario", pessoaModel.getTelefone());
contentValues.put("cidade_usuario",pessoaModel.getCidade());
contentValues.put("bairro_usuario", pessoaModel.getBairro());
contentValues.put("rua_usuario", pessoaModel.getRua());
contentValues.put("numero_usuario", pessoaModel.getNumero());
/*EXECUTANDO INSERT DE UM NOVO REGISTRO*/
usuarioDao.GetConexaoDataBase().insert("table_usuario",null,contentValues);
}
/***
* ATUALIZA UM REGISTRO JÁ EXISTENTE NA BASE
*/
public void Atualizar(Usuario pessoaModel){
ContentValues contentValues = new ContentValues();
/*MONTA OS PARAMENTROS PARA REALIZAR UPDATE NOS CAMPOS*/
contentValues.put("usuario_usuario", pessoaModel.getUsuario());
contentValues.put("senha_usuario", pessoaModel.getSenha());
contentValues.put("nome_usuario", pessoaModel.getNome());
contentValues.put("telefone_usuario", pessoaModel.getTelefone());
contentValues.put("cidade_usuario",pessoaModel.getCidade());
contentValues.put("bairro_usuario", pessoaModel.getBairro());
contentValues.put("rua_usuario", pessoaModel.getRua());
contentValues.put("numero_usuario", pessoaModel.getNumero());
/*REALIZANDO UPDATE PELA CHAVE DA TABELA*/
usuarioDao.GetConexaoDataBase().update("table_usuario", contentValues, "id_usuario = ?", new String[]{Integer.toString(pessoaModel.getId())});
}
/***
* EXCLUI UM REGISTRO PELO CÓDIGO
*/
public Integer Excluir(int id){
//EXCLUINDO REGISTRO E RETORNANDO O NÚMERO DE LINHAS AFETADAS
return usuarioDao.GetConexaoDataBase().delete("table_usuario","id_usuario = ?", new String[]{Integer.toString(id)});
}
/***
* CONSULTA UMA PESSOA CADASTRADA PELO CÓDIGO
* @return
*/
public Usuario GetUsuario(int id){
Cursor cursor = usuarioDao.GetConexaoDataBase().rawQuery("SELECT * FROM table_usuario WHERE id_usuario= "+ id,null);
cursor.moveToFirst();
///CRIANDO UMA NOVA PESSOA
Usuario pessoaModel = new Usuario();
//ADICIONANDO OS DADOS DA PESSOA
pessoaModel.setId(cursor.getInt(cursor.getColumnIndex("id_usuario")));
pessoaModel.setUsuario(cursor.getString(cursor.getColumnIndex("usuario_usuario")));
pessoaModel.setSenha(cursor.getString(cursor.getColumnIndex("senha_usuario")));
pessoaModel.setNome(cursor.getString(cursor.getColumnIndex("nome_usuario")));
pessoaModel.setTelefone(cursor.getString(cursor.getColumnIndex("telefone_usuario")));
pessoaModel.setCidade(cursor.getString(cursor.getColumnIndex("cidade_usuario")));
pessoaModel.setBairro(cursor.getString(cursor.getColumnIndex("bairro_usuario")));
pessoaModel.setRua(cursor.getString(cursor.getColumnIndex("rua_usuario")));
pessoaModel.setNumero(cursor.getString(cursor.getColumnIndex("numero_usuario")));
//RETORNANDO A PESSOA
return pessoaModel;
}
/***
* CONSULTA TODAS AS PESSOAS CADASTRADAS NA BASE
*/
public List<Usuario> SelecionarTodos(){
List<Usuario> pessoas = new ArrayList<Usuario>();
//MONTA A QUERY A SER EXECUTADA
StringBuilder stringBuilderQuery = new StringBuilder();
stringBuilderQuery.append(" SELECT id_usuario, ");
stringBuilderQuery.append(" usuario_usuario, ");
stringBuilderQuery.append(" senha_usuario, ");
stringBuilderQuery.append(" nome_usuario, ");
stringBuilderQuery.append(" telefone_usuario, ");
stringBuilderQuery.append(" cidade_usuario, ");
stringBuilderQuery.append(" bairro_usuario, ");
stringBuilderQuery.append(" rua_usuario, ");
stringBuilderQuery.append(" numero_usuario ");
stringBuilderQuery.append(" FROM table_usuario ");
stringBuilderQuery.append(" ORDER BY usuario_usuario ");
//CONSULTANDO OS REGISTROS CADASTRADOS
Cursor cursor = usuarioDao.GetConexaoDataBase().rawQuery(stringBuilderQuery.toString(), null);
/*POSICIONA O CURSOR NO PRIMEIRO REGISTRO*/
cursor.moveToFirst();
Usuario pessoaModel;
//REALIZA A LEITURA DOS REGISTROS ENQUANTO NÃO FOR O FIM DO CURSOR
while (!cursor.isAfterLast()){
/* CRIANDO UMA NOVA PESSOAS */
pessoaModel = new Usuario();
//ADICIONANDO OS DADOS DA PESSOA
pessoaModel.setId(cursor.getInt(cursor.getColumnIndex("id_usuario")));
pessoaModel.setUsuario(cursor.getString(cursor.getColumnIndex("usuario_usuario")));
pessoaModel.setSenha(cursor.getString(cursor.getColumnIndex("senha_usuario")));
pessoaModel.setNome(cursor.getString(cursor.getColumnIndex("nome_usuario")));
pessoaModel.setTelefone(cursor.getString(cursor.getColumnIndex("telefone_usuario")));
pessoaModel.setCidade(cursor.getString(cursor.getColumnIndex("cidade_usuario")));
pessoaModel.setBairro(cursor.getString(cursor.getColumnIndex("bairro_usuario")));
pessoaModel.setRua(cursor.getString(cursor.getColumnIndex("rua_usuario")));
pessoaModel.setNumero(cursor.getString(cursor.getColumnIndex("numero_usuario")));
//ADICIONANDO UMA PESSOA NA LISTA
pessoas.add(pessoaModel);
//VAI PARA O PRÓXIMO REGISTRO
cursor.moveToNext();
}
//RETORNANDO A LISTA DE PESSOAS
return pessoas;
}
}
View class EditActivity:
package com.example.sala304b.padariacoimbra.view;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.example.sala304b.padariacoimbra.R;
import com.example.sala304b.padariacoimbra.model.Usuario;
import com.example.sala304b.padariacoimbra.repository.UsuarioRepository;
import com.example.sala304b.padariacoimbra.uteis.Uteis;
public class EditarActivity extends AppCompatActivity {
EditText editTextCodigo;
EditText editTextUsuario;
EditText editTextSenha;
EditText editTextNome;
EditText editTextTelefone;
EditText editTextCidade;
EditText editTextBairro;
EditText editTextRua;
EditText editTextNumero;
Button buttonAlterar;
Button buttonVoltar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_editar);
this.CriarComponentes();
this.CriarEventos();
this.CarregaValoresCampos();
}
protected void CriarComponentes(){
editTextCodigo = this.findViewById(R.id.editTextCodigo);
editTextUsuario = this.findViewById(R.id.edUsuario);
editTextSenha = this.findViewById(R.id.edSenha);
editTextNome = this.findViewById(R.id.edNome);
editTextTelefone = this.findViewById(R.id.edTelefone);
editTextCidade = this.findViewById(R.id.edCidade);
editTextBairro = this.findViewById(R.id.edBairro);
editTextRua = this.findViewById(R.id.edRua);
editTextNumero = this.findViewById(R.id.edNumero);
buttonAlterar = this.findViewById(R.id.buttonAlterar);
buttonVoltar = this.findViewById(R.id.buttonVoltar);
}
protected void CriarEventos(){
buttonAlterar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Alterar_onClick();
}
});
buttonVoltar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intentMainActivity = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intentMainActivity);
finish();
}
});
}
protected void Alterar_onClick(){
if(editTextUsuario.getText().toString().trim().equals("")){
Uteis.Alert(this, this.getString(R.string.usuario_obrigatorio));
editTextUsuario.requestFocus();
}
else if(editTextSenha.getText().toString().trim().equals("")){
Uteis.Alert(this, this.getString(R.string.senha_obrigatorio));
editTextSenha.requestFocus();
}
else if(editTextNome.getText().toString().trim().equals("")){
Uteis.Alert(this, this.getString(R.string.nome_obrigatorio));
editTextNome.requestFocus();
}
else if(editTextTelefone.getText().toString().trim().equals("")){
Uteis.Alert(this, this.getString(R.string.telefone_obrigatorio));
editTextTelefone.requestFocus();
}
else if(editTextCidade.getText().toString().trim().equals("")){
Uteis.Alert(this, this.getString(R.string.cidade_obrigatorio));
editTextCidade.requestFocus();
}
else if(editTextBairro.getText().toString().trim().equals("")){
Uteis.Alert(this, this.getString(R.string.bairro_obrigatorio));
editTextBairro.requestFocus();
}
else if(editTextRua.getText().toString().trim().equals("")){
Uteis.Alert(this, this.getString(R.string.rua_obrigatorio));
editTextRua.requestFocus();
}
else if(editTextNumero.getText().toString().trim().equals("")){
Uteis.Alert(this, this.getString(R.string.numero_obrigatorio));
editTextNumero.requestFocus();
}
else{
Usuario pessoaModel = new Usuario();
pessoaModel.setUsuario(editTextUsuario.getText().toString().trim());
pessoaModel.setSenha(editTextSenha.getText().toString().trim());
pessoaModel.setNome(editTextNome.getText().toString().trim());
pessoaModel.setTelefone(editTextTelefone.getText().toString().trim());
pessoaModel.setCidade(editTextCidade.getText().toString().trim());
pessoaModel.setBairro(editTextBairro.getText().toString().trim());
pessoaModel.setRua(editTextRua.getText().toString().trim());
pessoaModel.setNumero(editTextNumero.getText().toString().trim());
new UsuarioRepository(this).Atualizar(pessoaModel);
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle(R.string.app_name);
alertDialog.setMessage("Registro alterado com sucesso! ");
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//RETORNA PARA A TELA DE CONSULTA
Intent intentRedirecionar = new Intent(getApplicationContext(), ConsultarActivity.class);
startActivity(intentRedirecionar);
finish();
}
});
alertDialog.show();
}
}
protected void CarregaValoresCampos(){
UsuarioRepository pessoaRepository = new UsuarioRepository(this);
Bundle extra = this.getIntent().getExtras();
int id_pessoa = extra.getInt("id_usuario");
Usuario pessoaModel = pessoaRepository.GetUsuario(id_pessoa);
editTextCodigo.setText(String.valueOf(pessoaModel.getId()));
editTextUsuario.setText(pessoaModel.getUsuario());
editTextSenha.setText(pessoaModel.getSenha());
editTextNome.setText(pessoaModel.getNome());
editTextTelefone.setText(pessoaModel.getTelefone());
editTextCidade.setText(pessoaModel.getCidade());
editTextBairro.setText(pessoaModel.getBairro());
editTextRua.setText(pessoaModel.getRua());
editTextNumero.setText(pessoaModel.getNumero());
}
}