Android隐式Intent实现页面回跳与startActivityForResult详解

5星 · 超过95%的资源 3 下载量 52 浏览量 更新于2024-08-30 收藏 126KB PDF 举报
在Android应用开发中,Intent是一种强大的工具,用于在应用程序内部或不同组件之间传递数据和控制流程。在之前的章节中,我们学习了如何使用显式Intent进行页面的向下跳转,即从一个Activity明确指定目标Activity进行跳转。然而,有时候我们需要实现的是隐式Intent,也就是从当前Activity跳转回之前访问过的某个Activity,这种情况下,通常是从一个更高级别的Activity返回到一个较低级别的Activity。 在Android的Activity设计中,`startActivityForResult()`方法起到了关键作用。这个方法不仅仅用于启动一个新的Activity,它还允许上一个Activity在目标Activity执行完毕后接收到结果。这在用户交互过程中非常有用,比如从搜索结果列表选择一项,然后返回到搜索结果页面并显示所选内容。`startActivityForResult()`方法接受两个参数:第一个参数是Intent,用于指定要启动的Activity;第二个参数是请求码(request code),它是一个整数值,用于标识这次请求,上一个Activity可以通过它来识别返回的数据来源。 以下是一个简单的例子,展示如何在`MainActivity`中使用`startActivityForResult()`实现隐式Intent跳转: ```java import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Button bt; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = findViewById(R.id.button1); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 创建一个Intent,指定要启动的FirstActivity作为目的地 Intent intent = new Intent(MainActivity.this, FirstActivity.class); // 使用startActivityForResult()方法启动FirstActivity,并传递请求码 startActivityForResult(intent, 1); // 1是一个示例请求码 } }); } // 当从FirstActivity返回时,会在onActivityResult()方法中处理结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1 && resultCode == RESULT_OK) { // 处理从FirstActivity返回的数据 String resultData = data.getStringExtra("result"); // 假设FirstActivity返回了一个字符串 tv.setText(resultData); } } } ``` 在`onActivityResult()`方法中,我们检查请求码(`requestCode`)是否与我们启动FirstActivity时设置的一致,如果匹配且结果状态(`resultCode`)为`RESULT_OK`,则意味着FirstActivity成功完成任务并提供了数据。这时,我们可以从`data`对象中获取返回的数据并更新UI。 了解并熟练运用`startActivityForResult()`方法和隐式Intent,可以帮助开发者构建更加流畅、灵活的用户体验,尤其是在处理Activity之间的导航和数据交互时。