我正在创建一个Android应用。其中一个功能是从用户收集一些数据(项目名称,项目ID和条形码字符串)。
Activity1是一个表单。用户手动输入项目名称和项目编号。对于条形码字符串,用户点击"扫描"按钮然后启动Activity2(扫描仪)以扫描和读取条形码。读取条形码后,Activity1(表单)将再次启动,所有数据都应显示在表单上。
当Activity2以Intent启动时,Activity1将被终止。所以,我必须得到项目名称和项目编号,并在凝视意图之前暂时存储它们。然后当Activity1再次启动时,这些数据将再次在窗体上呈现。
现在我想使用Intent Extra来保存项目名称和编号,并将它们传递给Activity2并返回到Activity1。鉴于Activity2不需要这些数据,我想知道在这种情况下这是否是正确的方法。有没有更好的方法?我应该使用共享首选项吗?
答案 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上, 用
更改你的开始Activity1private 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
对于此类应用程序来说是一个非常好的解决方案。它非常简单易用,易于实施。