如何将数据传递给以前的活动?

时间:2014-03-18 09:43:14

标签: android android-activity

我遇到以下问题。我有ActivityAActivityB。我在ActivityA中有一些单选按钮,用户可以选择它们。通过ActivityB访问ActivityA,因此当我按下按钮时,我会转到ActivityB。在ActivityB我做了一些计算,我希望将结果返回到ActivityA,但在转到ActivityA之前保存ActivityB中所做的更改。

如果我使用finish(),我会返回ActivityA并保存所选按钮,但ActivityB的结果不会传递给ActivityA

我想知道有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:2)

使用Activity B开始startActivityForResult()并使用Activity B将值从Activity A传递给setResult(),并从onActivityResult()方法检索该结果。< / p>

例如......

ActivityA.java ...

Intent i = new Intent(ActivityA.this, ActivityB.class);    
startActivityForResult(i, 1);

ActivityB.java ...中将结果发送回ActivityA ...

Intent i = new Intent();
i.putExtra("result", YourResult);
setResult(1, i);
finish();

现在,在ActivityA中,检索结果如下......

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {     
  super.onActivityResult(requestCode, resultCode, data); 

  if(resultCode == 1)
  {
     String result = data.getStringExtra("result");
  } 
}

答案 1 :(得分:0)

FirstActivity使用SecondActivity方法<{1}}致电startActivityForResult()

例如:

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

SecondActivity设置要返回FirstActivity的数据,如果您不想返回,请不要设置任何数据。

例如: 在secondActivity中,如果要发回数据:

 Intent returnIntent = new Intent();
 returnIntent.putExtra("result",result);
 setResult(RESULT_OK,returnIntent);     
 finish();

如果您不想返回数据:

Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);        
finish();

现在,在FirstActivity类中,为onActivityResult()方法

编写以下代码
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == 1) {

     if(resultCode == RESULT_OK){      
         String result=data.getStringExtra("result");          
     }
     if (resultCode == RESULT_CANCELED) {    
         //Write your code if there's no result
     }
  }
}//onActivityResult

答案 2 :(得分:0)

是..您可以使用StartActivityForResult:

从FirstActivity使用startActivityForResult()方法调用SecondActivity

示例:

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

SecondActivity设置要返回FirstActivity的数据,如果您不想返回,请不要设置任何数据。

例如:如果要发回数据,请在secondActivity中:

Intent returnIntent = new Intent();
 returnIntent.putExtra("result",result);
 setResult(RESULT_OK,returnIntent);     
 finish();

如果您不想返回数据:

Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);        
finish();

现在,在FirstActivity课程中,请编写onActivityResult()方法

的以下代码
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == 1) {

     if(resultCode == RESULT_OK){      
         String result=data.getStringExtra("result");          
     }
     if (resultCode == RESULT_CANCELED) {    
         //Write your code if there's no result
     }
  }
}

Refere

One more tutorial