当前位置: 首页 > news >正文

安卓基础(startActivityForResult和onActivityResult)

onActivityResult 方法有三个参数:

  • requestCode:启动 Activity 时传入的请求码,用于区分不同的启动请求。
  • resultCode:返回结果的状态码,通常为 RESULT_OK 或 RESULT_CANCELED
  • data:一个 Intent 对象,包含返回的数据。

使用步骤

  1. 调用 startActivityForResult 启动新 Activity:在原 Activity 中调用 startActivityForResult 方法,并传入一个请求码。
  2. 在新 Activity 中设置返回结果:在新 Activity 完成操作后,调用 setResult 方法设置返回结果,并调用 finish 方法关闭当前 Activity
  3. 重写 onActivityResult 方法处理返回结果:在原 Activity 中重写 onActivityResult 方法,根据请求码和结果码处理返回的数据。
1. 原 ActivityMainActivity
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {private static final int REQUEST_CODE = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 启动另一个 ActivityIntent intent = new Intent(this, SecondActivity.class);startActivityForResult(intent, REQUEST_CODE);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE) {if (resultCode == RESULT_OK) {// 获取返回的数据String result = data.getStringExtra("result");Toast.makeText(this, "返回结果: " + result, Toast.LENGTH_SHORT).show();} else if (resultCode == RESULT_CANCELED) {Toast.makeText(this, "操作被取消", Toast.LENGTH_SHORT).show();}}}
}
2. 新 ActivitySecondActivity
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;public class SecondActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);// 设置返回结果Intent intent = new Intent();intent.putExtra("result", "这是返回的结果");setResult(RESULT_OK, intent);// 关闭当前 Activityfinish();}
}

相关文章:

  • MySQL中的窗口函数
  • 2025年- H22-Lc130-206. 反转链表(链表)---java版
  • AnimateCC教学:照片旋转飞舞并爆炸....
  • NoxLucky:个性化动态桌面,打造独一无二的手机体验
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 19)
  • 快速搜索与管理PDF文档的专业工具
  • 《windows GCC 版本升级到9以上》
  • 工业传动核心部件深度剖析:丝杆升降机与气缸的技术特性及选型指南
  • 接口测试——HTTP状态码
  • LabVIEW软件设计锂电池故障模拟检测
  • BOSS的收入 - 华为OD机试(A卷,C++题解)
  • Linux:如何查看Linux服务器的磁盘、CPU、内存信息?
  • 深挖Java之:运算符与输入器
  • K8S自动弹性伸缩机制详解
  • toLua笔记
  • WebRTC 服务器之Janus概述和环境搭建
  • mysql主从复制搭建,并基于‌Keepalived + VIP实现高可用
  • LeetCode //C - 696. Count Binary Substrings
  • 多模态大语言模型arxiv论文略读(五十七)
  • CSS 预处理器 Sass
  • 碧桂园服务:拟向杨惠妍全资持有的公司提供10亿元贷款,借款将转借给碧桂园用作保交楼
  • 上海国际电影节特设“走进大卫·林奇的梦境”单元
  • 机关食堂向游客开放的重庆荣昌区,“消费市场迎来历史性突破”
  • 实探北京楼市:“好房子”卖点十足,二手房持续回稳
  • 巴菲特首次明确批评贸易战,“投资界春晚”有哪些看点?一文速览
  • 新加坡2025年大选开始投票