就像我可以使用以下方法将数据从一个活动发送到另一个活动:
intent.putExtra("Name", Value);
当我使用finish()
返回上一个活动时,如何发送数据。
在我Activity_A
的应用中,我将前往Activity_B
。在Activity_B
我在地图上标记了一个位置,它给出了我的纬度和经度。然后我想在Activity_A
中使用这个lat和lng。但我不想使用意图回到Activity_A
,因为我不想重新创建Activity_A
,因为已经填充的某些数据将会丢失。
答案 0 :(得分:27)
当您使用intent.putExtra("Name", Value);
时,在完成活动时也会使用相同的内容。
例如:
从activityA你可以调用activityB,如:
intent.putExtra("Name", Value);
now instead of startActivity() use `startActivityForResult()`
从activityB开始,在完成活动时,请致电:
setResult(RESULT_OK);
现在在activityA中,您的onActivityResult
将被调用,如:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
}
所以你可以这样处理它。
答案 1 :(得分:19)
在活动A中:
// Add more, if you call different activities from Activity A
private static final REQUEST_GET_MAP_LOCATION = 0;
void doSomething() {
...
startActivityForResult(theIntentYouUseToStartActivityB, REQUEST_GET_MAP_LOCATION);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_GET_MAP_LOCATION && resultCode == Activity.RESULT_OK) {
int latitude = data.getIntExtra("latitude", 0);
int longitude = data.getIntExtra("longitude", 0);
// do something with B's return values
}
}
在活动B中:
...
setResult(Activity.RESULT_OK,
new Intent().putExtra("latitude", latitude).putExtra("longitude", longitude));
finish();
...
答案 2 :(得分:6)
使用Activity_B
startActivityForResult()
与Activity_A
联系
//Starting a new Intent
Intent nextScreen = new Intent(getApplicationContext(), Activity_B.class);
// starting new activity
startActivityForResult(nextScreen,1000);
完成Activity_B
后,您致电setResult()
设置数据,然后点finish()
//Starting the previous Intent
Intent previousScreen = new Intent(getApplicationContext(), Activity_A.class);
//Sending the data to Activity_A
previousScreen.putExtra("Bla"," Blabla");
setResult(1000, previousScreen);
finish();
这会将您带回到之前的Activity_A
。
在Activity_A
中,覆盖onActivityResult()
。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
String bla = data.getStringExtra("Bla");
}
找到here
答案 3 :(得分:1)
使用startActivityForResult
在B setResult
之前启动B和finish
并在A
onAcitivityResult