Android:如何使活动返回结果给调用它的活动?

我有一个Location活动,可以从许多活动,如Sign upOrder调用。 在Location活动中,用户input他的位置,所以活动Location将这个新位置返回给调用它的活动。

因此,当Sign up活动调用Location活动时,必须将数据返回到Sign up活动。 Order活动的另一次将做同样的事情。

注意

我知道你会告诉我,我应该张贴代码,但我不是要你给我的代码; 我只是想要一些提示,链接或良好的线程。

为了开始一个应该返回结果给活动的活动,你应该做下面的事情。 您应该通过请求代码,如下所示,以确定您从您开始的活动得到的结果。

 startActivityForResult(new Intent(“YourFullyQualifiedClassName”),requestCode); 

在这个活动中你可以使用setData()来返回结果。

 Intent data = new Intent(); String text = "Result to be returned...." //---set the data to pass back--- data.setData(Uri.parse(text)); setResult(RESULT_OK, data); //---close the activity--- finish(); 

因此,再次在第一个活动中,您在onActivityResult()中编写下面的代码

 public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == request_Code) { if (resultCode == RESULT_OK) { String returnedResult = data.getData().toString(); } } } 

基于你的评论编辑:如果你想返回三个string,然后通过意图使用键/值对而不是使用Uri。

 Intent data = new Intent(); data.putExtra("streetkey","streetname"); data.putExtra("citykey","cityname"); data.putExtra("homekey","homename"); setResult(RESULT_OK,data); finish(); 

让他们像下面的onActivityResult

 public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == request_Code) { if (resultCode == RESULT_OK) { String street = data.getStringExtra("streetkey"); String city = data.getStringExtra("citykey"); String home = data.getStringExtra("homekey"); } } } 

你可以调用finish()

喜欢这个

 @Override public void onBackPressed() { Intent i = new Intent(); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); finish(); } 

如果你想完成并添加一个resultCode (没有数据),你可以在finish()之前调用setResult(int resultCode) finish()

例如:

 ... if (everything_OK) { setResult(1); // OK! finish(); } else { setResult(-1); // some error ... finish(); } ... 

然后在你的调用活动中,检查resultCode ,看看我们是否可以。

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == someCustomRequestCode) { if (resultCode == 1) { // OK! } else if (resultCode = -1) { // something went wrong :-( } } } 

不要忘记用startActivityForResult(intent, someCustomRequestCode)来调用活动。