繁体   English   中英

如何在每次单击按钮时创建一个新的 object?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM