android从一个Activity转到另一个Activity的方式:
封面图
•
2025-11-14
•
Android开发
172
0
0
0
在 Android 开发中,从一个 Activity 转到另一个 Activity 的方式主要有以下几种: --- ## ✅ 1. 使用 `Intent` 启动另一个 Activity 这是最常见、最基础的方式。 ### 示例代码: ```java Intent intent = new Intent(CurrentActivity.this, TargetActivity.class); startActivity(intent); ``` ### 如果需要传递数据: ```java Intent intent = new Intent(CurrentActivity.this, TargetActivity.class); intent.putExtra("key", "value"); startActivity(intent); ``` 在目标 Activity 中接收数据: ```java String value = getIntent().getStringExtra("key"); ``` --- ## ✅ 2. 使用 `startActivityForResult()`(适用于需要返回结果的场景) 当你需要从目标 Activity 获取返回结果时使用。 ### 在当前 Activity 中: ```java Intent intent = new Intent(CurrentActivity.this, TargetActivity.class); startActivityForResult(intent, REQUEST_CODE); ``` ### 在目标 Activity 中设置返回结果: ```java Intent resultIntent = new Intent(); resultIntent.putExtra("result_key", "result_value"); setResult(RESULT_OK, resultIntent); finish(); ``` ### 回到原 Activity 接收结果: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { String result = data.getStringExtra("result_key"); // 处理返回的数据 } } ``` > ⚠️ 注意:`startActivityForResult()` 在 Android 11(API 30)之后被标记为 **废弃**,推荐使用 `ActivityResultLauncher`。 --- ## ✅ 3. 使用 `ActivityResultLauncher`(推荐方式,适用于 Android 11+) 这是 Android Jetpack 提供的新方式,用于替代 `startActivityForResult()`。 ### 步骤如下: #### 1. 注册 `ActivityResultLauncher` ```java ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == RESULT_OK) { Intent data = result.getData(); String resultData = data.getStringExtra("result_key"); // 处理返回的数据 } } ); ``` #### 2. 启动目标 Activity ```java Intent intent = new Intent(CurrentActivity.this, TargetActivity.class); activityResultLauncher.launch(intent); ``` #### 3. 在目标 Activity 返回数据 ```java Intent resultIntent = new Intent(); resultIntent.putExtra("result_key", "result_value"); setResult(RESULT_OK, resultIntent); finish(); ``` --- ## ✅ 4. 使用 `Navigation Component`(适用于 Fragment 或 Navigation Graph) 如果你使用了 Navigation Component(比如通过 `NavController`),可以通过导航图跳转到另一个 Activity。 ### 示例: ```java NavController navController = Navigation.findNavController(view); navController.navigate(R.id.action_currentFragment_to_targetActivity); ``` > 需要配置 `navigation graph` 并定义 `action`。 --- ## ✅ 5. 使用 `PendingIntent`(适用于后台任务或通知点击) 例如从通知跳转到某个 Activity: ```java Intent intent = new Intent(context, TargetActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); Notification notification = new Notification.Builder(context, CHANNEL_ID) .setContentTitle("Title") .setContentText("Text") .setSmallIcon(R.drawable.icon) .setContentIntent(pendingIntent) .build(); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(1, notification); ``` --- ## 📌 总结 | 方式 | 是否推荐 | 适用场景 | |------|----------|----------| | `Intent` | ✅ | 基础跳转 | | `startActivityForResult()` | ❌(已弃用) | 需要返回结果(旧版) | | `ActivityResultLauncher` | ✅ | 需要返回结果(新版) | | `Navigation Component` | ✅ | 导航图跳转 | | `PendingIntent` | ✅ | 通知/后台跳转 | --- 如需更详细的示例或具体场景(如带参数跳转、跨应用跳转等),欢迎继续提问!
上一篇:
[Android]Fragment的四种跳转
下一篇:
Android理解:显式和隐式Intent
标题录入,一次不能超过6条
留言
评论