Fiz minha implementação utilizando o Parcelable ao invés do Serializable. Mas creio que esse não seja o motivo de não está mostrando a nota quando eu clico em uma para fazer a alteração, eu consigo fazer a alteração da nota, porém no meu formulário não me é mostrada a mesma nota para que eu possa alterá-la, simplesmente fica em branco o formulário, daí eu digito a alteração ali e a mesma é alterada logo depois, mas não tenho o feedback com o nome da nota antiga antes de fazer a alteração. Meu código a FormularioNotaActivity segue abaixo.
package br.com.ceep.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import br.com.ceep.R;
import br.com.ceep.model.Nota;
import static br.com.ceep.ui.activity.NotaActivityConstantes.CHAVE_NOTA;
import static br.com.ceep.ui.activity.NotaActivityConstantes.CODIGO_RESULTADO_NOTA_CRIADA;
public class FormularioNotaActivity extends AppCompatActivity {
private int posicaoRecebida;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario_nota);
Intent dadosRecebidos = getIntent();
if (dadosRecebidos.hasExtra(CHAVE_NOTA) && dadosRecebidos.hasExtra("posicao")){
Nota notaRecebida = (Nota) dadosRecebidos.getParcelableExtra(CHAVE_NOTA);
posicaoRecebida = dadosRecebidos.getIntExtra("posicao", -1);
TextView titulo = findViewById(R.id.formulario_nota_titulo);
titulo.setText(notaRecebida.getTitulo());
TextView descricao = findViewById(R.id.formulario_nota_descricao);
descricao.setText(notaRecebida.getDescricao());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_formulario_nota_salva, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (ehMenuSalvaNota(item)){
Nota nota = criaNota();
retornaNota(nota);
finish();
}
return super.onOptionsItemSelected(item);
}
private void retornaNota(Nota nota) {
Intent resultadoInsercao = new Intent();
resultadoInsercao.putExtra(CHAVE_NOTA, nota);
resultadoInsercao.putExtra("posicao", posicaoRecebida);
setResult(CODIGO_RESULTADO_NOTA_CRIADA, resultadoInsercao);
}
private Nota criaNota() {
EditText titulo = findViewById(R.id.formulario_nota_titulo);
EditText descricao = findViewById(R.id.formulario_nota_descricao);
return new Nota(titulo.getText().toString(), descricao.getText().toString());
}
private boolean ehMenuSalvaNota(MenuItem item) {
return item.getItemId() == R.id.menu_formulario_nota_ic_salva;
}
}