我如何将 ArrayLists 传递给另一个 activity,修改它,然后 return 它重新使用?

How do I pass ArrayLists to another activity, modify it, and return it back to use?

我正在尝试创建项目的 login/register 部分,但在将注册信息传回登录 activity 时遇到了问题。我在MainActivity中初始化了username_info、password_info、name_info,想通过Intent发送给SignUpActivity

        Intent i = new Intent(this, SignUpActivity.class);
        i.putExtra("username_info", username_info);
        i.putExtra("password_info", password_info);
        i.putExtra("name_info", name_info);
        startActivityForResult(i, 101);

在另一个 activity 中添加值后,它像这样发回(两个活动中的数组列表具有相同的名称):

        Intent r = new Intent();
        r.putExtra("username_info", username_info);
        r.putExtra("password_info", password_info);
        r.putExtra("name_info", name_info);
        setResult(Activity.RESULT_OK, r);
        finish();
    }

并在此处收到:

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 101) {
            if (resultCode == Activity.RESULT_OK) {
                Bundle e = getIntent().getExtras();
                username_info = e.getStringArrayList("username_info");
                password_info = e.getStringArrayList("password_info");
                name_info = e.getStringArrayList("name_info");
            }
        }
    }

但是当我回到 MainActivity 时,数组列表没有改变。我是 Android Studio 的新手,所以我可能只是犯了一个简单的错误。

编辑: 当用户名和密码不匹配时我崩溃了,但它应该返回祝酒词:

@Override
            public void onClick(View v) {
                username = username_input.getText().toString();
                password = password_input.getText().toString();
                int index = username_info.indexOf(username);

                if (username_info.size() < 1) {
                    Toast.makeText(MainActivity.this, "You must sign up first", Toast.LENGTH_SHORT).show();
                }
                else if (password_info.get(index).equals(password)) {
                    Toast.makeText(MainActivity.this, "make an activity", Toast.LENGTH_SHORT).show();
                        // open activity
                }
                else {
                    Toast.makeText(MainActivity.this, "Incorrect username/password", Toast.LENGTH_SHORT).show();
                }
            }
        });

不要在 onActivityResult 中使用 getIntent(),而是使用 Intent data:

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 101) {
            if (resultCode == Activity.RESULT_OK) {
                Bundle e = data.getExtras();
                username_info = e.getStringArrayList("username_info");
                password_info = e.getStringArrayList("password_info");
                name_info = e.getStringArrayList("name_info");
            }
        }
    }