在上一节中,我们发起了一个子活动,我们传递了一些数据。 在这我们将看一下如何从子活动中返回数据。下图显示了如何解决这个问题的事件顺序。
我们将从MainActivity启动子活动。 这可以通过创建一个来管理显式的intent对象并调用startActivityForResult。 活动可能会启动多个其他活动,每个活动都可以返回一些结果。 当这些结果回来时,它们都将在onActivityResult方法中,所以我们需要知道从哪个活动每个结果都来自; REQUEST_CODE将帮助我们解决这个问题。
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivityForResult(intent, REQUEST_CODE)
当运行时解析intent时,SubActivitygets将被创建并将成为可见。 到那时,它可以通过用户输入创建自己的数据。 如果它想
将数据返回给MainActivity,它需要创建一个intent对象将数据发送回去MainActivity通过捎带意图对象。
String data = "Data to send back";
intent.putExtra("key", data);
setResult(Activity.RESULT_OK, intent);
finish();
当SubActivity调用finish方法时,它将被销毁,并且MainActivity然后将返回到活动堆栈的顶部。 运行时将调用MainActivity’s
onActivityResult;这是我们可以提取SubActivitysent的数据的地方。
一、建立演示的工程和UI
1、创建新项目
名称为GetResultsSubActivity
建立子活动SecondActivity
2、添加相应控件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="