Android页面跳转详解:接收返回数据的处理

5星 · 超过95%的资源 需积分: 9 26 下载量 156 浏览量 更新于2024-09-12 收藏 67KB DOC 举报
"Android页面跳转的详细指南与实践心得" 在Android开发中,页面间的跳转是一项基础但至关重要的任务。通常,Android页面跳转包括三种情况:无数据传递的简单跳转、带有数据的跳转以及带有返回结果的跳转。下面我们将深入探讨第三种情况,即从一个Activity(A)启动另一个Activity(B),并接收B返回的数据进行处理。 首先,启动带有返回结果的Activity时,我们会使用`startActivityForResult(Intent intent, int requestCode)`方法。这里的`intent`参数用于承载跳转目标Activity的信息,而`requestCode`则是一个自定义的整型值,用于标识请求的来源,以便在接收结果时进行区分。例如,当一个Activity中有两个按钮,每个按钮对应启动同一个新Activity时,我们可以通过不同的`requestCode`来识别返回的结果是哪个按钮触发的活动。 当新Activity(B)执行完毕,需要返回结果时,可以通过`setResult(int resultCode)`或`setResult(int resultCode, Intent data)`方法设置返回码(`resultCode`)和可能的数据(`Intent data`)。`resultCode`是一个整型值,通常用来表示操作的状态,比如成功、失败等;`data`则是携带具体信息的对象,可以包含任意类型的数据。 当B关闭时,系统会回调A中的`onActivityResult(int requestCode, int resultCode, Intent data)`方法。在这个方法里,我们可以根据`requestCode`判断返回的数据来自哪个按钮的操作,根据`resultCode`判断操作状态,而`data`则包含了B返回的具体数据。例如: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == BUTTON1_REQUEST_CODE) { if (resultCode == RESULT_OK) { // 处理来自按钮1的数据 String returnedData = data.getStringExtra("key"); // ... } } else if (requestCode == BUTTON2_REQUEST_CODE) { if (resultCode == RESULT_OK) { // 处理来自按钮2的数据 int returnedValue = data.getIntExtra("key", defaultValue); // ... } } } ``` 在这个例子中,`BUTTON1_REQUEST_CODE`和`BUTTON2_REQUEST_CODE`是预设的请求码,`RESULT_OK`是常见的成功返回码,通过`getStringExtra()`和`getIntExtra()`等方法可以从`Intent data`中获取数据。 在实际应用中,可能还会涉及到更复杂的情况,如多级跳转、异步操作后返回结果等。对于这种情况,可以使用类似上述的逻辑,结合业务需求进行适当的调整。理解并熟练掌握`startActivityForResult()`和`onActivityResult()`方法,对优化Android应用的用户体验至关重要。