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后无法访问网络共享_共享权限设置方法【教程】