startActivityForResult的详细用法

Android startActivityForResult 过时的替代方法(解释了跳转报错问题) Android api29中startActivityForResult提示已过时,应该变成registerForActivityResult,下面做了简单的跳转携带数据和返回数据。 阅读详情
在启动另外一个Activity的时候,有两种方法,一种是直接使用startActivity,另外一种就是使用startActivityForResult。前一种想必大家都明白怎么使用了,我就不废话了。本文主要通过一个Demo来学习一下第二种。

startActivityForResult的主要作用就是它可以回传数据,假设我们有两个页面,首先进入第一个页面,里面有一个按钮,用于进入下一个页面,当进入下一个页面时,进行设置操作,并在其finish()动作或者back动作后,将设置的值回传给第一个页面,从而第一个页面来显示所得到的值。这个有一点像回调方法,就是在第二个页面finish()动作或者back动作后,会回调第一个页面的onActivityResult()方法,所以我们可以重写一下这个方法。直接看代码吧:
第一个页面代码:

  1. package org.sunchao;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.TextView;  
  10.   
  11. public class TestStartActivityForResultActivity extends Activity implements  
  12.         OnClickListener {  
  13.     private TextView mText01;  
  14.     private TextView mText02;  
  15.     private Button button01;  
  16.     private Button button02;  
  17.     private Intent mIntent;  
  18.     private int requestCode;  
  19.   
  20.     /** Called when the activity is first created. */  
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.main);  
  25.         mText01 = (TextView) findViewById(R.id.mText01);  
  26.         mText02 = (TextView) findViewById(R.id.mText02);  
  27.         button01 = (Button) findViewById(R.id.mButton01);  
  28.         button02 = (Button) findViewById(R.id.mButton02);  
  29.         button01.setOnClickListener(this);  
  30.         button02.setOnClickListener(this);  
  31.         mText01.setText("01");  
  32.         mText02.setText("02");  
  33.   
  34.         mIntent = new Intent();  
  35.         mIntent.setClass(TestStartActivityForResultActivity.this,  
  36.                 Activity02.class);  
  37.     }  
  38.   
  39.     @Override  
  40.     public void onClick(View v) {  
  41.         switch (v.getId()) {  
  42.         case R.id.mButton01:  
  43.             // 请求码的值随便设置,但必须>=0  
  44.             requestCode = 0;  
  45.             startActivityForResult(mIntent, requestCode);  
  46.             break;  
  47.         case R.id.mButton02:  
  48.             requestCode = 2;  
  49.             startActivityForResult(mIntent, requestCode);  
  50.             break;  
  51.         default:  
  52.             break;  
  53.         }  
  54.     }  
  55.   
  56.     // 回调方法,从第二个页面回来的时候会执行这个方法  
  57.     @Override  
  58.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  59.         String change01 = data.getStringExtra("change01");  
  60.         String change02 = data.getStringExtra("change02");  
  61.         // 根据上面发送过去的请求吗来区别  
  62.         switch (requestCode) {  
  63.         case 0:  
  64.             mText01.setText(change01);  
  65.             break;  
  66.         case 2:  
  67.             mText02.setText(change02);  
  68.             break;  
  69.         default:  
  70.             break;  
  71.         }  
  72.     }  
  73. }  
第一个页面布局文件:
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView    
  8.     android:id="@+id/mText01"  
  9.     android:layout_width="fill_parent"   
  10.     android:layout_height="wrap_content"   
  11.     />  
  12. <TextView    
  13.     android:id="@+id/mText02"  
  14.     android:layout_width="fill_parent"   
  15.     android:layout_height="wrap_content"   
  16.     />  
  17. <Button   
  18.     android:id="@+id/mButton01"  
  19.     android:layout_width="fill_parent"   
  20.     android:layout_height="wrap_content"  
  21.     android:text="改变第一行文本的值"  
  22.     />  
  23. <Button   
  24.     android:id="@+id/mButton02"  
  25.     android:layout_width="fill_parent"   
  26.     android:layout_height="wrap_content"  
  27.     android:text="改变第二行文本的值"  
  28.     />  
  29. </LinearLayout>  
第二个页面代码:
  1. package org.sunchao;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6.   
  7. public class Activity02 extends Activity {  
  8.     private int resultCode = 0;  
  9.   
  10.     @Override  
  11.     protected void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.activity02);  
  14.         Intent mIntent = new Intent();  
  15.         mIntent.putExtra("change01", "1000");  
  16.         mIntent.putExtra("change02", "2000");  
  17.         // 设置结果,并进行传送  
  18.         this.setResult(resultCode, mIntent);  
  19.         // this.finish();  
  20.     }  
  21.   
  22. }  
第二个页面布局文件:
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView    
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:text="文本的值已经改变"  
  11.     />  
  12. </LinearLayout>  
AndroidManifest.xml:
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="org.sunchao"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     <uses-sdk android:minSdkVersion="8" />  
  7.   
  8.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  9.         <activity android:name=".TestStartActivityForResultActivity"  
  10.                   android:label="@string/app_name">  
  11.             <intent-filter>  
  12.                 <action android:name="android.intent.action.MAIN" />  
  13.                 <category android:name="android.intent.category.LAUNCHER" />  
  14.             </intent-filter>  
  15.         </activity>  
  16.         <activity android:name=".Activity02" />  
  17.   
  18.     </application>  
  19. </manifest>  
运行效果图:






代码下载地址: http://download.youkuaiyun.com/source/3448804

转:http://blog.youkuaiyun.com/sunchaoenter/article/details/6612039




startActivityForResult用法详解 一、如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。 package com.l. 阅读详情

相关推荐

Android startActivityForResult和onActivityResult的基本用法

方法的作用: startActivityForResult():该方法的工作原理与startActivity非常相似,但有一个重大的区别。除了传递用于确定启动哪个Activity的显式或隐士Intent外,还需要传入一个请求码,请求码将用于返回结果的子Activity的唯一标识。 onActivityResult():当子Activity关闭时,onActivityResult()将在父Activity中触发。可以通过重写方法来处理子Activity的返回结果。 下面在代码中演示一下这两个方法是如何搭配

路宇的博客 1860

Android startActivityForResult用法

一、介绍 当我们在第一个Activity打开第二个Activity时,第二个Activity关闭并想返回数据给第一个Activity时,我们就可以使用startActivityForResult进行传值。 用到的几个方法介绍: 1. startActivityForResult(Intent intent, int requestCode) requestCode:如果> =...

JUN_LLLL的博客 2万+

掌握Android Activity交互:使用StartActivityForResult

方法允许你启动一个新的 Activity,并期望从该 Activity 获取返回结果。当目标 Activity 结束时,系统会调用当前 Activity 的回调方法,携带返回结果。请求码(Request Code)是Android开发中用于标识不同Activity间通信的一个整数值。它起到一个类似于”标签”的作用,使得发起请求的Activity能够区分返回结果的来源。

weixin_34718952的博客 1116

startActivityForResult详解

众所周知,startActivity是进行Activity之间的跳转,然后我在书上看到还有一个方法startActivityForResult.看了书上的解释,感觉不是很理解,于是自己试了这个方法. Activity1.java mBtn1.setOnClickListener(new View.OnClickListener() { @Override ...

没事学点AI小知识 8020

CAPL实战:从零构建HEX文件解析器,赋能UDS刷写

本文详细介绍了如何使用CAPL从零构建HEX文件解析器,以支持UDS刷写操作。通过解析HEX文件格式、设计状态机、优化数据结构与算法,实现高效准确的固件数据处理,并提供了与UDS刷写流程对接的工程化实践建议。

weixin_28726391的博客 443

433MHz无线通信避坑指南:如何解决信号干扰和误码问题

本文深入探讨433MHz无线通信中的信号干扰和误码问题,提供从射频前端设计到协议优化的全链路解决方案。通过天线匹配、电源噪声抑制、曼彻斯特编码改进及实时频点切换等技术,显著提升通信稳定性和距离。适合智能家居和工业无线控制系统的开发者参考。

weixin_29288313的博客 417

startActivityForResult用法

startActivityForResult用法 startActivityForResult主要用来从FirstActivity跳转到SecondActivity然后返回FirstActivity并且获取从SecondActivity传回来的参数。 使用方法:如下从ClockManagerActivity跳转到NewMapActivity并且传address值 ClockManagerActiv...

哼哼哈嘿的博客 4万+

1.全基因组重测序数据分析介绍

二代测序原理及fastq数据解读、全基因组重测序数据分析内容

weixin_53682198的博客 1881

Android中的startActivityForResult()的基本用法

目录: 1、startActivityForResult与startActivity的不同之处 2、startActivityForResult的具体用法 2.1 定义跳转按钮 2.2设置要跳转的activity 2.3 second_layout.xml的编写 2.4secondActivity 2.5 mainAc...

qq_37710798的博客 735

医学影像分割入门:为什么U-Net至今仍是肝脏CT肿瘤分割的‘首选’?

本文探讨了U-Net在肝脏CT肿瘤分割中的持久优势,分析了其轻量化设计、对称架构和跳跃连接如何完美适配医学影像的小样本、高精度需求。通过对比实验和实战建议,揭示了U-Net在肝脏肿瘤分割任务中超越新模型的根本原因,并提供了PyTorch实现和部署技巧。

weixin_38166931的博客 518

FIddler+Proxifer 实现PC客户端抓包详细教程

FIddler+Proxifer 实现PC客户端抓包详细教程

森明帮大于黑虎帮的博客 1万+

StartActivityforResult用法

StartActivityforResult用法 如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent d

NiCk_ZhangYN的博客 861

嵌入式开发之瑞芯微RK356x--基本环境搭建

嵌入式环境搭建

NexyHO的博客 617

android: startActivityForResult用法详解

https://www.cnblogs.com/zgqys1980/p/5286208.html

weixin_43971560的博客 187

Dify 第 14 篇 Dify 知识库改造案例,如何返回完整文档?

在使用Dify社区版v1.7.1的知识库功能时,遇到检索仅返回匹配的文本片段而非完整文档的问题。针对运维案例知识库的需求,尝试了三种解决方案: 调整Chunk大小:通过设置最大分段长度为4000字符,但无法满足超过该长度的文档需求。 增加返回Chunk数量:通过调整Top K参数,但最大仅支持10个片段,且可能包含无关内容。 调用知识库API:通过检索接口获取匹配文档ID,再查询该文档所有分段内容,从而获得完整信息。具体步骤包括生成API密钥、获取知识库ID,并通过HTTP请求实现。 最终推荐采用AP

甘蓝的专栏 1968

069、自动曝光(AE)测光策略:全局/中心/点测光与曝光时间增益分配

本文深入探讨了自动曝光(AE)测光策略的技术细节与实际应用。作者通过多个真实案例(手机前置摄像头、车载ADAS、安防监控等)分析了全局测光、中心测光和点测光的优缺点,指出不同场景应采用不同策略。重点剖析了曝光时间与增益分配的"跷跷板效应",提出要根据传感器特性选择最优分配方案。文章强调测光策略应动态调整,并给出5条实用建议:结合场景切换测光模式、关注传感器增益拐点、点测光需防抖处理、全局测光不宜迷信、调试要观察亮度直方图。最后指出AE调试需要结合具体硬件特性进行实测优化,没有通用解决方案。

zzfmlxs的博客 100

startActivityForResult的用法

在切换界面时,原有的界面需要从新界面取得某些数据,这时需要用到startActivityForResult,比如说从activity1跳转到activity2,边看代码边说用法吧: activity1的代码片段:这是跳转到activity2Intent intent = new Intent(Activity1.this, Activity2.class);startActivit

Jason的专栏 2461

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

startActivityForResult与ARouter在fragment中使用startActivityForResult

以上简单的实现基本能够满足日常使用,如果更复杂的使用场景那么可以选择更加完善易用的三方库。还有,不同的启动模式会对startActivityForResult造成各种影响,切记切记。作者:Mtk链接:https://juejin.cn/post/6861944938381672462来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

chuyouyinghe的专栏 846

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Fragment的startActivityForResult和Activity的startActivityForResult的区别

1. 前言 Activity、FragmentActivity、Fragment中都有startActivityForResult()方法,也都有用以接收结果的onActivityResult()方法,那他们有什么区别吗?用法上有什么不同吗? 之所以注意到这个问题,是因为最近一次在Fragment中使用了getActivity().startActivityForResult()去调用图片选择器,结果发现在Fragment的onActivityResult无法接收到返回的结果。 2. 表现 假设.

qijingwang的博客 956

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android startActivityForResult()的用法

领导说我基础差,我也没反驳,知识忘记了,用到的时候查一下不久行了吗,自己最近在回顾知识好好的在补充一下,今天礼拜日,趁着空闲事件记录一下简单的知识 startActivityForResult() 也是经常使用到比如我们做城市选择点击城市,返回点击的城市等等, 使用startActivityForResult()方法 你需要清楚 1startActivityForResult(Inten...

小牧在一直在学习,在前进的道路上大家一起学习,进步。 1038
上一篇: ListView+AdapterView
下一篇: requestCode 和 resultCode
wx1qq1com
博客等级 码龄18年 123粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值