如何将多个整数值从活动A中的EditText传递到活动B中的文本视图?

时间:2018-11-07 20:56:05

标签: android android-activity

我有2个活动。

在活动A中,我有4个只能包含整数的EditText。 有一个按钮,应该计算出用户输入的这四个数字的平均值。

活动B中有5个文本视图(4个数字,1个结果)。 当按下活动A中的按钮时。 它将数字从活动A中的EditText传递到活动B中的文本视图,还应在结果文本视图中显示4个数字的平均值。

我看了很多教程,但是它们只是针对一个值,当我尝试将代码复制为多个值时,应用程序崩溃。

3 个答案:

答案 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