我遇到以下问题。我有ActivityA
和ActivityB
。我在ActivityA
中有一些单选按钮,用户可以选择它们。通过ActivityB
访问ActivityA
,因此当我按下按钮时,我会转到ActivityB
。在ActivityB
我做了一些计算,我希望将结果返回到ActivityA
,但在转到ActivityA
之前保存ActivityB
中所做的更改。
如果我使用finish()
,我会返回ActivityA
并保存所选按钮,但ActivityB
的结果不会传递给ActivityA
。
我想知道有没有办法实现这个目标?
答案 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
}
}
}