[英]How do I create a new object on every button click?
我正在创建一个笔记应用程序,我几乎完成了它。 我的应用程序从主要活动开始,它显示了一个显示所有已保存笔记的recylcerView
。 要创建新笔记,请按一个按钮,该按钮会将您发送到另一个活动,您可以在其中编写笔记。 然后,您按下一个按钮,将笔记保存为Note
class 的实例,并将该 object 实例发送回主活动,在该活动中更新 recyclerView。
我的问题是,每次我按下笔记的保存按钮时,它只会更新笔记实例,而不是创建一个全新的实例。 如何获得它来创建笔记 class 的新实例,以便我可以保存多个笔记?
这是我保存按钮的代码:
Intent intent = new Intent(AddNoteActivity.this, MainActivity.class);
String mTitle = title.getText().toString();
String mContent = content.getText().toString();
intent.putExtra("notePar", new Note(mTitle, mContent));
startActivity(intent);
这是我的主要活动代码:
Intent intent = getIntent();
Note sentParcNote = intent.getParcelableExtra("notePar");
if(sentParcNote != null) {
notes.add(sentParcNote);
}
您正在使用startActivity(intent)
从AddNoteActivity
导航到MainActivity
,该方法用于启动一个新活动,这意味着系统将创建一个新的MainActivity
实例 class 并将其放在活动堆栈的顶部。 这样,您将始终拥有 0 或 1 个注释(当sentParcNote != null
时)
当您从MainActivity
导航到AddNoteActivity
并在您的AddNoteActivity
中调用setResult
时,我建议使用startActivityForResult
例子:
MainActivity
:
在 class 的顶部声明这个 static int (例如:就在onCreate
方法之前)
private static final int ADD_NOTE_ACTIVITY_REQUEST_CODE = 2;
然后在您的按钮操作上添加这段代码以启动AddNoteActivity
:
Intent addNoteIntent = new Intent(this, AddNoteActivity.class);
startActivityForResult(addNoteIntent, ADD_NOTE_ACTIVITY_REQUEST_CODE);
然后从AddNoteActivity
中捕获新笔记
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ADD_NOTE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Note sentParcNote = data.getParcelableExtra("notePar");
if(sentParcNote != null) {
notes.add(sentParcNote);
}
}
}
}
AddNoteActivity
:
将这段代码添加到您的保存按钮操作中
String mTitle = title.getText().toString();
String mContent = content.getText().toString();
Intent intent = new Intent();
intent.putExtra("notePar", new Note(mTitle, mContent));
setResult(RESULT_OK, intent);
// finish closes the current activity which means in this case it goes back to the MainActivity
finish();
我建议使用本地存储来保存您的笔记,否则如果您重新启动应用程序,您将始终有 0 个笔记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.