我有2个活动。
在活动A中,我有4个只能包含整数的EditText。 有一个按钮,应该计算出用户输入的这四个数字的平均值。
活动B中有5个文本视图(4个数字,1个结果)。 当按下活动A中的按钮时。 它将数字从活动A中的EditText传递到活动B中的文本视图,还应在结果文本视图中显示4个数字的平均值。
我看了很多教程,但是它们只是针对一个值,当我尝试将代码复制为多个值时,应用程序崩溃。
答案 0 :(得分:2)
一种方法是将值作为用于启动活动B的Intent的“附加”发送。
以下是活动A的可能代码:
Intent i = new Intent(this, ActivityB.class);
i.putExtra("1", num1);
i.putExtra("2", num2);
i.putExtra("3", num3);
i.putExtra("4", num4);
i.putExtra("average", result);
startActivity(i);
此代码假定您要在单独的变量num1-num4中发送整数,并在另一个称为“结果”的变量中计算平均值。
要在活动B中解压此包,您可以执行以下操作:
Intent i = getIntent();
textView1.setText(i.getIntExtra("1", 0); //0 is the default value in case the extra does not exist
textView2.setText(i.getIntExtra("2", 0);
textView3.setText(i.getIntExtra("3", 0);
textView4.setText(i.getIntExtra("4", 0);
resultView.setText(i.getIntExtra("average", 0));
您还可以将数字放入一个数组中,一次调用putExtra
,一次调用getIntArrayExtra
。
这样会更优雅,但我想演示发送多个单独的数字。
答案 1 :(得分:1)
1。使用“意图捆绑包”通过
活动代码发送数据
Intent intent=new Intent(MainActivity.this,ActivityB.class);
Bundle bundle=new Bundle();
bundle.putInt("num1",10);
bundle.putInt("num2",20);
intent.putExtra("bun",bundle);
startActivity(intent);
activityB代码接收数据
Intent intent=getIntent();
Bundle bundle=intent.getBundleExtra("bun");
int num1=bundle.getInt("num1",0);
int num2=bundle.getInt("num2",0);
2。使用序列化对象Seriazable
实现类
public class DataUtils implements Serializable {
private int name;
private int age;
public String getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
活动代码发送数据
Intent intent = new Intent(ActivityA.this,ActivityB.class);
DataUtils dataUtils = new DataUtils();
dataUtils.setAge(20);
dataUtils.setName(10);
intent.putExtra("du",dataUtils);
startActivity(intent);
activityB代码接收数据
Intent intent=getIntent();
Serializable serializable=intent.getSerializableExtra("du");
if (serializable instanceof DataUtils){
DataUtils db=(DataUtils) serializable;
int name=db.getName();
int age=db.getAge();
}
3。使用sharedPreferences传递数据
4。使用类的静态变量传递数据
答案 2 :(得分:0)
最好的方法是使用Intent.putExtra()
,您可以在其中存储键值对。这是有关操作方法的简短指南:How to use intent.putextra to pass data between activities