在android中的活动之间暂时保存和恢复数据的正确方法是什么?

时间:2017-01-18 16:33:29

标签: android android-intent android-sharedpreferences

我正在创建一个Android应用。其中一个功能是从用户收集一些数据(项目名称,项目ID和条形码字符串)。

Activity1是一个表单。用户手动输入项目名称和项目编号。对于条形码字符串,用户点击"扫描"按钮然后启动Activity2(扫描仪)以扫描和读取条形码。读取条形码后,Activity1(表单)将再次启动,所有数据都应显示在表单上。

当Activity2以Intent启动时,Activity1将被终止。所以,我必须得到项目名称和项目编号,并在凝视意图之前暂时存储它们。然后当Activity1再次启动时,这些数据将再次在窗体上呈现。

现在我想使用Intent Extra来保存项目名称和编号,并将它们传递给Activity2并返回到Activity1。鉴于Activity2不需要这些数据,我想知道在这种情况下这是否是正确的方法。有没有更好的方法?我应该使用共享首选项吗?

4 个答案:

答案 0 :(得分:0)

在您的第一个活动中,使用put extra参数来表达这样的意思:

// Assuming Activity2.class is second activity
Intent intent = new Intent(this, Activity2.class); 
intent.putExtra("variable_name", var); // here you are passing var to second activity
startActivity(intent);

然后在第二个活动中检索这样的参数:

String var2 = getIntent().getStringExtra(variable_name);

答案 1 :(得分:0)

你可以创建一个单例类并公开setter(用于保存)和getter(用于检索)模型对象的方法(这里有两个私有字符串变量)。这个类将在你的应用程序中存活:

public class MyClass{
private static MyClass instance=null;
public static getInstance(){
if(instance==null){
instance=new MyClass();
}
return instance;
}


private String itemName;
private String itemNumber;
//setter and getter methods here  
}

答案 2 :(得分:0)

为什么需要杀死Activity 1,尝试调用

活动1

声明newline=''

然后

csv

在你的活动2上, 用

更改你的开始Activity1
private int SCAN_BARCODE_REQUEST = 101;

答案 3 :(得分:-5)

您可以使用SharedPreferences。 您可以在这里学习如何使用它们: https://www.tutorialspoint.com/android/android_shared_preferences.htm https://developer.android.com/training/basics/data-storage/shared-preferences.html

SharedPreferences对于此类应用程序来说是一个非常好的解决方案。它非常简单易用,易于实施。