Android基础之startActivityForResult()的用法详解
发布时间 - 2026-01-10 22:41:40 点击率:次前言

安卓开发中一个很基础的操作就是打开一个 Activity ,另一个很必要的操作就是,打开一个 Activity ,在打开的 Activity 中操作之后并获得返回结果。
两个 Activity
为了演示这个操作,我们需要两个 Activity : MainActivity 和 OtherActivity ,在 MainActivity 中通过 Intent 启动 OtherActivity ,并获得 OtherActivity 结束后返回的结果,例子仅作演示,为了方便,我直接在 Java 文件中定义了控件,就不写布局文件了。
MainActivity.java
package net.conw.intenttest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class MainActivity extends Activity implements View.OnClickListener {
private EditText editText;
private Button button;
public static int REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
editText = new EditText(this);
button = new Button(this);
button.setText("Main");
button.setOnClickListener(this);
layout.addView(editText);
layout.addView(button);
setContentView(layout);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("text", editText.getText().toString());
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE && resultCode == OtherActivity.RESULT_CODE) {
editText.setText(data.getStringExtra("text"));
}
}
}
OtherActivity.java
package net.conw.intenttest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class OtherActivity extends Activity implements View.OnClickListener {
private EditText editText;
private Button button;
public static int RESULT_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
editText = new EditText(this);
button = new Button(this);
button.setText("Other");
button.setOnClickListener(this);
layout.addView(editText);
layout.addView(button);
setContentView(layout);
editText.setText(getIntent().getStringExtra("text"));
}
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("text", editText.getText().toString());
setResult(RESULT_CODE, intent);
finish();
}
}
整个代码的执行逻辑如下:
1、两个 Activity 的代码就是这样的, 当 MainActivity 中的 Button 被触发 onClick() 事件后,把 MainActivity 中的 EditText 的内容发给了 OtherActivity 。
2、OtherActivity 打开并初始化好控件后,把 EditText 的内容设置为 MainActivity 发过来的内容。
3、当 OtherActivity 中的 Button 被触发 onClick() 事件后,把 OtherActivity 中的 EditText 的内容返回给 MainActivity。
4、当返回到 MainActivity 时,会执行 ononActivityResult() 方法的内容,判断如果 RequestCode 和 ResultCode 无误后,把 MainActivity 中的 EditText 的内容改为 OtherActivity 返回的结果。(这里判断了 RequestCode 和 ResultCode ,所以 OtherActivity 通过 Back 键返回时, MainActivity 的内容不会改变)
所以结果就是,通过这样的方式打开这两个Activity,他们中的 EditText 的内容是同步的,一个 Activity 改变了,到另一个 Activity 中也会跟着改变。
总结
好了,以上就是关于Android中startActivityForResult() 的全部内容了,希望本文的内容对各位Android开发者们能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对的支持。
# startactivityresult
# activity
# setresult
# startactivity用法
# Android startActivityForResult的调用与封装详解
# Android startActivityForResult的基本用法详解
# Android利用startActivityForResult返回数据到前一个Activity
# Android startActivityForResult和setResult的区别
# Android startActivityForResult实例详解
# Android startActivityForResult()代替方案示例
# 好了
# 如有
# 这两个
# 给了
# 中也
# 谢谢大家
# 设置为
# 仅作
# 不写
# 结束后
# 改变了
# 很必要
# Button
# widget
# View
# os
# content
# app
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Laravel如何实现事件和监听器?(Event & Listener实战)
Laravel如何实现多对多模型关联?(Eloquent教程)
,网页ppt怎么弄成自己的ppt?
详解Android——蓝牙技术 带你实现终端间数据传输
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
C++时间戳转换成日期时间的步骤和示例代码
EditPlus中的正则表达式实战(6)
jQuery中的100个技巧汇总
手机网站制作与建设方案,手机网站如何建设?
如何在万网主机上快速搭建网站?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
Laravel如何创建自定义中间件?(Middleware代码示例)
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何在不使用负向后查找的情况下匹配特定条件前的换行符
LinuxCD持续部署教程_自动发布与回滚机制
如何快速查询域名建站关键信息?
Laravel如何使用Blade组件和插槽?(Component代码示例)
Bootstrap整体框架之JavaScript插件架构
怎么用AI帮你设计一套个性化的手机App图标?
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
Laravel如何处理CORS跨域请求?(配置示例)
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
长沙企业网站制作哪家好,长沙水业集团官方网站?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
网站图片在线制作软件,怎么在图片上做链接?
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
浅谈Javascript中的Label语句
javascript如何操作浏览器历史记录_怎样实现无刷新导航
如何在腾讯云免费申请建站?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
在centOS 7安装mysql 5.7的详细教程
如何快速上传建站程序避免常见错误?
Laravel如何实现模型的全局作用域?(Global Scope示例)
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Python文件异常处理策略_健壮性说明【指导】
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
深圳网站制作培训,深圳哪些招聘网站比较好?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
千库网官网入口推荐 千库网设计创意平台入口
php打包exe后无法访问网络共享_共享权限设置方法【教程】

