Olá, tentei aplicar o startActivityForResult não funcionou, quando era inserido uma nova nota não aparecia na lista do RecyclerView, não sei se é por conta de estar deprecated e já fazer algum tempo da gravação, antes diziam que funcionava, então tentei aplicar o formato novo que consta na documentação que é o uso do ActivityResultLauncher, porém quando insiro uma nova nota não aparece na lista do RecyclerView também, poderia me ajudar por favor?
Activity da lista de notas
public class NoteListActivity extends AppCompatActivity {
private NoteListAdapter adapter;
private List<Notes> allNotes;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
allNotes = getNotes();
configureRecyclerView(allNotes);
ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == 2) {
Intent data = result.getData();
Notes receivedNote = (Notes) data.getSerializableExtra("note");
adapter.addNewNote(receivedNote);
}
});
TextView insertNoteButton = findViewById(R.id.insertNewNote);
insertNoteButton.setOnClickListener(view -> {
Intent renderNoteFormActivity = new Intent(this, NoteFormActivity.class);
someActivityResultLauncher.launch(renderNoteFormActivity);
});
}
@Override
protected void onResume() {
NoteDao dao = new NoteDao();
allNotes.clear();
allNotes.addAll(dao.getAllNotes());
adapter.notifyDataSetChanged();
super.onResume();
}
private void configureRecyclerView(List<Notes> allNotes) {
RecyclerView notesList = findViewById(R.id.recycleView);
configureAdapter(allNotes, notesList);
}
private void configureAdapter(List<Notes> allNotes, RecyclerView notesList) {
adapter = new NoteListAdapter(this, allNotes);
notesList.setAdapter(adapter);
}
private List<Notes> getNotes() {
NoteDao dao = new NoteDao();
dao.insertNote(new Notes("Primeira nota",
"Primeira descrição"));
return dao.getAllNotes();
}
}
Activity do formulário
public class NoteFormActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note_form);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.save_new_note_manu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.save_new_note_menu){
EditText title = findViewById(R.id.inputTitle);
EditText description = findViewById(R.id.inputDescription);
Notes createdNote = new Notes(title.getText().toString(),
description.getText().toString());
Intent insertionResult = new Intent();
insertionResult.putExtra("note", createdNote);
setResult(2, insertionResult);
finish();
}
return super.onOptionsItemSelected(item);
}
}