掌握Android Activity间数据传递:onActivityResult详解

0 下载量 57 浏览量 更新于2024-09-01 1 收藏 123KB PDF 举报
在Android开发中,理解如何在应用程序内部传递数据以及接收来自其他Activity的结果至关重要。本篇Android学习笔记主要关注如何在启动另一个Activity后,获取并处理被启动Activity传递回来的数据。Android中的Activity间通信通常通过Intent来实现,特别是当一个Activity需要将数据返回到启动它的Activity时。 首先,我们有一个名为MainActivity的Activity,它包含了两个基本组件:一个Button和一个TextView。Button用于触发启动另一个Activity的行为,而TextView则用于展示从目标Activity返回的数据。在onCreate方法中,我们初始化了这些组件,并设置了Button的点击监听器,当用户点击时,会创建一个新的Intent,指定要启动的Activity——AnotherActivity,并设置请求码(requestCode)为0,这是为了后续区分不同的请求。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // ... findViewById(R.id.btnSend).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, AnotherActivity.class); startActivityForResult(intent, 0); } }); } ``` 关键的部分在于`onActivityResult()`方法的实现。当MainActivity调用`startActivityForResult()`后,系统会在目标Activity执行完毕并返回时调用这个方法。`requestCode`参数与我们之前设置的值相匹配,系统会自动传递回来`requestCode`、`resultCode`和`data`。`resultCode`表示操作结果,`data`是一个包含额外数据的Intent对象,我们可以从中获取我们想要的数据。 ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0 && resultCode == Activity.RESULT_OK) { // 检查请求码和结果代码是否匹配 textView.setText("另外一个Activity传回来的数据是:" + data.getStringExtra("data")); // 从data中提取并显示数据 } } ``` 在这个例子中,我们在AnotherActivity执行完后,假设它使用`putExtra()`方法添加了一个键值对"data",键名为"data",值为需要传递的数据。在MainActivity的`onActivityResult()`方法中,我们检查请求码和结果代码,确保是从期望的Activity返回的,然后通过`getStringExtra()`方法获取并显示该数据。 总结起来,本篇学习小结介绍了如何在Android应用中利用`startActivityForResult()`和`onActivityResult()`来实现Activity之间的数据传递,这对于构建复杂的用户界面和管理应用程序状态非常重要。开发者可以根据实际需求调整请求码、结果代码和传递的数据类型,以满足各种交互场景。