跨多个活动保存 Spinners、RadioGroups、EditText 中的数据以供重复使用

Saving data from Spinners, RadioGroups ,EditText, across several activities to re-use

作为 android 的新手,尽管构建了几个基本应用程序,但我的经验有限,所以如果您能考虑到这一点来组织任何回复,我将不胜感激。

我想:在 signup/login 部分之后,通过两个或三个 Activity 从微调器、单选按钮和文本输入中收集用户选择,并在第四个 activity 中显示收集的数据,以便如果需要,可以检查返回以进行更改。

如果正确,请转到第五个 activity,其中数据被结构化并通过电子邮件发送到注册部分提供的电子邮件地址。我已经制作了基本结构,包括带有字符串数组的微调器,并且确实制作了一个可以按要求工作的应用程序,将带有额外内容的数据传递给下一个 activity,但是我想将数据传递给最后一个 activity不仅仅是下一个。如果可以避免的话,我真的不想使用数据库,但可能会这样,因为当所有数据都已收集和审查后,并且在出现问题和应用程序崩溃时尝试了 Sharedpreferences 我很难找出原因,所以在为了让事情更清楚,我已经将所有内容剥离回基本结构,只留下工作微调器、无线电组和导航按钮,我在这里。

由于我留下的应用程序结构有 5 个活动和 5 个 class 文件,我对 post 代码犹豫不决,因为我不确定是否已完成,但我愿意在问题上得到指导。

在您的第一个 activity 中,从用户那里收集数据后,您可以使用 Intent.putExtras(Bundle) 将它们添加到您的 Intent 中。这是一个使用用户在 EditText.

中输入的用户名的示例
String username = myEditText.getText().toString();
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle extras = new Bundle();
extras.putString("username",username);
intent.putExtras(extras);
startActivity(intent);

在第二个 activity 中,您可以像这样从 onCreate 的 extras 中获取数据:

Bundle extras = this.getIntent().getExtras();
String username = extras.getString("username");

当转到 third/fourth...activity 时,您可以执行与打开 activity 时使用的 Intent 相同的步骤来携带您的数据.先从extras中获取数据,然后将其添加到下一个intent的extras中。

您可能希望将变量设为全局变量,或者因为您可能希望在无法访问它们的 onClick 中使用它们。