BOA NOITE
Estou com um problema estou passando um objeto para edição para uma outra activity e quando volto esse objeto de volta eu recebo a posição -1 Caused by: java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1. OBS:Eu tinha implementado com o onResume tinha dado certo quando eu edito e salvo no formulário mais eu quero que fique com essa responsabilidade a activity lista igual como o professor Alex Felipe fez ai recebo esse menos -1 vou colocar o código aqui e o link do projeto no git por favor me ajuda ???
OBS:Estou usando o android studio Bumblebee | 2021.1.1 Patch 2 Android Gradle Plugin Version - 7.1.2 Gradle Version 7.2 E Android SDK Build-Tools - 32
OBS :Parece que o objeto está perdendo o index dela. Me ajuda...por favor *Link git: * https://github.com/VanderleiODeMelo/AgendaAlura.git
ListaAlunosActivity
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data);
//AQUI SALVO COM SUCESSO !
if(requestCode == 1){
if(resultCode == RESULT_OK && data != null && data.hasExtra(CHAVE_ALUNO)){
Aluno aluno = (Aluno) data.getSerializableExtra(CHAVE_ALUNO);
AlunoDao alunoDao = AgendaDataBase.getInstance(this).alunoDao();
alunoDao.salvar(aluno);
adapter.salvar(aluno);
}
}
//EDITAR DA ERRO -1
if(requestCode == 2){
if(resultCode == RESULT_OK && data != null && data.hasExtra(CHAVE_ALUNO)){
Aluno alunoRecebidoEditar = (Aluno) data.getSerializableExtra(CHAVE_ALUNO);
//OBS:AQUI ESTOU RECEBENDO - 1
int posicaoRecebida = data.getIntExtra(CHAVE_POSICAO, POSICAO_INVALIDA);
AlunoDao alunoDao = AgendaDataBase.getInstance(this).alunoDao();
alunoDao.editar(alunoRecebidoEditar);
adapter.editar(posicaoRecebida,alunoRecebidoEditar);
}
}
}
}
FormularioCadastroActivity
public class FormularioCadastroActivity extends AppCompatActivity {
public static final String TITULO_APPBAR = "Formulario cadastro";
private EditText idCampoNome;
private EditText idCampoEmail;
private EditText idCampoTelefone;
private Aluno aluno;
private int posicaoRecebida = POSICAO_INVALIDA;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario_cadastro);
setTitle(TITULO_APPBAR);
inicializarCamposIds();
//PEGAR A INTENT
Intent dadosAlunoRecebidos = getIntent();
if (dadosAlunoRecebidos.hasExtra(CHAVE_ALUNO)) {
aluno = (Aluno) dadosAlunoRecebidos.getSerializableExtra(CHAVE_ALUNO);
posicaoRecebida = dadosAlunoRecebidos.getIntExtra(CHAVE_POSICAO, POSICAO_INVALIDA);
if (aluno != null) {
idCampoNome.setText(aluno.getNome());
idCampoEmail.setText(aluno.getEmail());
idCampoTelefone.setText(aluno.getTelefone());
}
} else {
aluno = new Aluno();
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int itemIdMenuSalvar = item.getItemId();
if (itemIdMenuSalvar == R.id.menu_salvar) {
//salva
aluno = criarAluno();
if (aluno.temIdValido()) {
Intent intent = new Intent();
intent.putExtra(CHAVE_ALUNO, aluno);
intent.putExtra(CHAVE_POSICAO,posicaoRecebida);
setResult(Activity.RESULT_OK,intent);
} else {
Intent vaiParaListaAlunosActivity = new Intent();
vaiParaListaAlunosActivity.putExtra(CHAVE_ALUNO, aluno);
setResult(Activity.RESULT_OK, vaiParaListaAlunosActivity);
}
finish();
}