全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android基础之startActivityForResult()的用法详解

前言

安卓开发中一个很基础的操作就是打开一个 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 


相关文章: 如何在宝塔面板创建新站点?  如何选择美橙互联多站合一建站方案?  建站主机选购指南与交易推荐:核心配置解析  如何用腾讯建站主机快速创建免费网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在自有机房高效搭建专业网站?  定制建站策划方案_专业建站与网站建设方案一站式指南  如何在景安云服务器上绑定域名并配置虚拟主机?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  如何快速辨别茅台真假?关键步骤解析  如何快速搭建高效香港服务器网站?  建站之星价格显示格式升级,你的预算足够吗?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  定制建站哪家更专业可靠?推荐榜单揭晓  如何快速打造个性化非模板自助建站?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  c# 服务器GC和工作站GC的区别和设置  大连网站设计制作招聘信息,大连投诉网站有哪些?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  建站之星×万网:智能建站系统+自助建站平台一键生成  岳西云建站教程与模板下载_一站式快速建站系统操作指南  如何制作一个表白网站视频,关于勇敢表白的小标题?  网站制作难吗安全吗,做一个网站需要多久时间?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  TestNG的testng.xml配置文件怎么写  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  北京的网站制作公司有哪些,哪个视频网站最好?  动图在线制作网站有哪些,滑动动图图集怎么做?  威客平台建站流程解析:高效搭建教程与设计优化方案  如何续费美橙建站之星域名及服务?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何在局域网内绑定自建网站域名?  建站主机选购指南:核心配置与性价比推荐解析  html制作网站的步骤有哪些,iapp如何添加网页?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  建站之星安装提示数据库无法连接如何解决?  如何在Windows 2008云服务器安全搭建网站?  如何在Windows环境下新建FTP站点并设置权限?  金*站制作公司有哪些,金华教育集团官网?  如何在宝塔面板中创建新站点?  专业公司网站制作公司,用什么语言做企业网站比较好?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  宁波免费建站如何选择可靠模板与平台?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  建站之星后台密码遗忘或太弱?如何重置与强化?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  如何通过VPS搭建网站快速盈利? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。