Android:如何使活动返回结果给调用它的活动?
我有一个Location
活动,可以从许多活动,如Sign up
和Order
调用。 在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)
来调用活动。