Android 获取Activity返回值教程

0 下载量 101 浏览量 更新于2024-09-02 收藏 52KB PDF 举报
本文将介绍如何在Android应用中获取上一个Activity返回的值,这是一个常见的交互过程,特别是在多个Activity之间传递数据时。我们将通过一个简单的示例,展示Activity A如何启动Activity B,然后从Activity B获取选定的数据并显示在Activity A上。 在Android中,我们可以通过Intent对象来传递数据,并在另一个Activity中接收这些数据。以下是实现这个功能的步骤: 1. 声明和注册Activity:首先,在AndroidManifest.xml文件中声明并注册你将要使用的Activity。例如,Activity B(在这个例子中是"DemoActivity")需要在主配置文件中声明,如以下代码所示: ```xml <!-- 注册通讯录的读写权限 --> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> <!-- .表示上面manifest标签中package属性的值 --> <activity android:name=".DemoActivity" android:label="选择联系人"> </activity> ``` 2. 在A中设置布局和事件监听:在Activity A的布局XML文件中,创建需要显示返回值的控件,比如EditText,以及用于启动Activity B的Button。同时,给Button添加点击事件监听器。例如: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="启动B"/> </LinearLayout> ``` 3. 启动Activity B并传递数据:在Activity A的Java代码中,当Button被点击时,我们需要创建一个新的Intent,用来启动Activity B并传递一些初始数据(如果有的话)。同时,设置一个结果监听器,以便在B返回数据后进行处理。例如: ```java Button button1 = findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(A.this, DemoActivity.class); // 可以添加额外的数据 intent.putExtra("key", "initial_data"); startActivityForResult(intent, REQUEST_CODE_B); // 使用startActivityForResult启动B } }); ``` 在这里,`REQUEST_CODE_B`是一个自定义的整数值,用于识别不同的请求。 4. 在B中处理数据并返回:在Activity B中,用户选择或操作完成后,需要将结果数据放入Intent,并使用`setResult()`方法返回给Activity A。例如,如果你是从联系人列表中选择了联系人,你可以这样做: ```java Intent resultIntent = new Intent(); resultIntent.putExtra("selected_contact", selectedContact); setResult(RESULT_OK, resultIntent); // 结果状态码为RESULT_OK,表示成功 finish(); // 结束Activity B ``` 5. 在A中接收返回数据:最后,在Activity A中重写`onActivityResult()`方法,该方法会在B返回结果时被调用。在这里,我们可以从Intent中取出返回的数据,并显示在TextView上: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_B && resultCode == RESULT_OK) { String returnedData = data.getStringExtra("selected_contact"); TextView textView = findViewById(R.id.textView); textView.setText(returnedData); } } ``` 通过以上步骤,你就能成功地从Activity B获取到返回值并在Activity A中展示了。在实际开发中,你可以根据需要传递不同类型的值,如整数、字符串、自定义对象等,只需相应调整`putExtra()`和`getExtra()`方法即可。