如何将值从不同的活动传递到另一个活动

时间:2015-03-21 20:49:11

标签: android android-activity

我正在编写我的第一个Android应用程序。

我想在活动A中输入3个整数,并在活动B和C中执行相同的操作。然后我想用所有9个整数计算一些内容,并在活动D中显示结果。

如何将前3个活动中的整数转换为最后一个活动?

编辑: 我已经尝试了两个Activity ..来自MainActivity的输入中的整数,输出在ActivityView中的TextView中打印...但是Activity 2中的答案始终为零。

代码是: -

公共类MainActivity扩展了ActionBarActivity {

int int1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button b = (Button) findViewById(R.id.bt1);
    EditText et = (EditText) findViewById(R.id.edT1);
    try{
    int1 = Integer.parseInt(et.getText().toString());
    } catch (NumberFormatException e)
    {
        e.printStackTrace();
    }
    b.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i = new Intent(MainActivity.this,Activity2.class);
            i.putExtra("val1",int1);
            startActivity(i);

        }
    });
}

}

活动2是: -

public class Activity2 extends Activity {

int value;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity2xml);
    TextView t2 = (TextView) findViewById(R.id.tt2);
    Intent intent = getIntent();
    int a = intent.getIntExtra("val1",0);
    t2.setText("Bingo "+String.valueOf(a));

}

}

3 个答案:

答案 0 :(得分:0)

您可以使用putExtra方法发送原始数据类型。只需像这样使用它。

//in activity A 
Intent myIntent = new Intent(this,ActivityB.class);
myIntent.putExtra("int1", 3);
myIntent.putExtra("int2", 5);
startActivity(myIntent);

//您可以在Activty B中获取此值

Bundle extras = getIntent().getExtras();
int int1= extras.getInt("int1");
int int2 = extras.getInt("int2");

你可以像这样继续将ActivityB发送到AcitivtyC,将ActivityC发送到ActivityD。

答案 1 :(得分:0)

您必须将Intent中的值从活动传递到活动,直到活动D.

class ActivityA extends Activity {
   ...
   private void startActivityB(){
      Intent i = new Intent(this, ActivityB.class);
      i.putExtra("val1", 1);
      i.putExtra("val2", 1);
      i.putExtra("val3", 1);
      startActivity(i);
   }
}

ActivityB中,您必须阅读从ActivityA传递的值,并将这些值传递给ActivityC新的值:

class ActivityB extends Activity {
   ...
   private void startActivityC(){

      int val1 = getIntent().getIntExtra("val1", 0);
      int val2 = getIntent().getIntExtra("val2", 0);
      int val3 = getIntent().getIntExtra("val3", 0);

      Intent i = new Intent(this, ActivityC.class);
      i.putExtra("val1", val1);
      i.putExtra("val2", val2);
      i.putExtra("val3", val3);

      i.putExtra("val4", 5);
      i.putExtra("val5", 6);
      i.putExtra("val6", 7);

      startActivity(i);
   }
}

ActivityC执行相同的操作,并在ActivityD中读取值。我希望你明白这一点。

顺便说一下。如果你知道Activity D应该显示总和,那么优化就是将总和从Activity传递给Activity而不是单个值。

答案 2 :(得分:-1)

将您在活动A,B,C中输入的值存储在SharedPreference对象中。 在活动D中检索该对象的所有值。

有关如何使用共享偏好的参考,请参阅 - http://developer.android.com/training/basics/data-storage/shared-preferences.html