startActivity与startActivityForResult的使用小结
1、在一个Activity中想要启动进入另一个Activity时,通常我们使用startActivity这个方法来实现,代码如下:
其中MainActivity为源activity,ActivityLifeCycleActivity为目标activity,也就是要进入的那个,也可通过intent传递一些必要的参数。
Intent intent = new Intent(MainActivity.this, ActivityLifeCycleActivity.class);
startActivity(intent);
2、当进入第二个activity后,想要在关闭activity时传递一些参数给它的上一级activity,即可使用startActivityForResult这个方法来实现,代码如下:
方法中的intent和startActivity的intent没有区别,需要传递一个requestCode, 即1这个值为本次请求的标识,在第二个activity返回后用的到
Intent intent = new Intent(MainActivity.this, ActivityForResultActivity.class);
startActivityForResult(intent, 1);
在ActivityForResultActivity中返回数据,通过setResult方法实现,第一个参数为resultCode,告诉第一个activity返回的标识是RESULT_OK, 第二个参数通过intent传递数据;调用finish关闭当前activity,返回数据,即执行ActivityForResultActivity.this.finish() 完成activity的关闭
public class ActivityForResultActivity extends ActionBarActivity {
private Button mBtnReturnMain;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_for_result);
mBtnReturnMain = (Button) findViewById(R.id.btn_return_main);
mBtnReturnMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { Intent intent = new Intent();
intent.putExtra("result", "我是来自ForResult的Activity的消息"); setResult(RESULT_OK, intent);
ActivityForResultActivity.this.finish();
}
});
}
}
在源activity也就是MainActivity中实现方法onActivityResult,判断resultCode的值和上面setResult的第一个参数进行对应,分支requestCode与startActivityForResult的第二个参数对应,这样可以通过参数值在做多个分支的跳转与数据接收
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){ switch (requestCode){
case 1:
String str = data.getStringExtra("result");
if(TextUtils.isEmpty(str)){
str = "ForResultActivity没有返回消息";
} Toast.makeText(MainActivity.this,str, Toast.LENGTH_SHORT).show(); break; default:
break;
} }
}
以上就是对startActivity和startActivityForResult的一点总结
startActivity与startActivityForResult的使用小结的更多相关文章
- Activity间的跳转,startActivity与startActivityForResult
JreduCh04 2016-07-30跳转 (由一个画面跳转到另一个画面)两种方法:Intent中 startActivity.startActivityForResult.后者可设置request ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- startActivity、 startActivityForResult 、广播的使用
前言 近期忙着跟项目.好久没有写文字了.今天一个群里面的童鞋问到一个关于不同界面间传值的问题,借这个背景,写一段关于" startActivity. startActivityForResu ...
- 从零开始学android开发-详细谈谈intent的startActivityForResult()方法
1.两种实现activity跳转的方法 实现activity的跳转主要有两种方法,startActivity()和startActivityForResult();例如activity A跳转到act ...
- intent的startActivityForResult()方法
/******************************************************************************************** * au ...
- Android -- startActivityForResult和setResult
startActivityForResult与startActivity的不同之处 startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivit ...
- 【Android开发精要笔记】Android的Intent机制
Android的Intent机制 Intent对象的作用和构成 android意图机制最核心的设计思想,就是引入了组件管理服务作为连接组件的管理者. 该服务的作用: 通过组件的配置信息了解系统中每个组 ...
- 掘金 Android 文章精选合集
掘金 Android 文章精选合集 掘金官方 关注 2017.07.10 16:42* 字数 175276 阅读 50053评论 13喜欢 669 用两张图告诉你,为什么你的 App 会卡顿? - A ...
- Intent知识详解
Intent知识详解 一.什么是Intent 贴一个官方解释: An intent is an abstract description of an operation to be performed ...
随机推荐
- nexus5 root教程
转载自: http://www.inexus.co/article-1280-1.html http://www.pc6.com/edu/71016.html https://download.cha ...
- WinXP 无线提示“区域中找不到无线网络”的一种可能原因!
貌似WinXP还是无限经典,我也一直还在用,不知道哪天才会放弃.这次遇见的问题,或许也有XP爱好者也遇得见,记下点文字备忘.----------------------- 单调的切割线 ------- ...
- iOS中block实现的探究
[0. Brief introduction of block] Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C语言的扩展,用来实现匿名函数的特性. 用维基百科的话来说,Blo ...
- 设计模式(3)-对象创建型模式-Abstract Factory模式
1.对象创建型模式 1.3 Abstract Factory模式 1.3.1 需求 在下面情况能够使用Abstract Factory模式: • 一个系统要独立于它的产品的创建. ...
- Python笔记:使用pywin32处理excel文件
因为前端同事须要批量的对excel文件做特殊处理,删除指定行,故写了此脚本.同一时候配合config.ini方便不熟悉py的同事使用 #!/usr/bin/env python #-*- coding ...
- 十二.200多万元得到的创业教训--app名字是关键
摘要:当完毕了一个app后,就要须要上应用市场,以下讲一下起名和上应用市场的一些技巧. 健生干货分享:第12篇 1.必须是先上app store,再上其它应用市场 为啥要这样做?由于app store ...
- Java基础知识强化47:StringBuffer类之StringBuffer的三个面试题
1. 面试题:String,StringBuffer,StringBuilder的区别 ? 答:String是字符串内容不可变的,而StringBuffer和StringBuilder是字符串内容长度 ...
- JS高级程序设计学习笔记之第三章基本概念(语法,数据类型,流控制语句,函数)——查漏补缺
一.语法: 区分大小写; 2.标识符:就是指变量.函数.属性的名字,或者函数的参数 a.标志符的规则:①第一个字符必须是一个字母.下划线(_)或一个美元符号($). ...
- VMware 虚拟机(linux)增加根目录磁盘空间 转自
转自 http://wenku.baidu.com/link?url=WZDgESO0oXqYfhPYOWFalZsMglS0HKtLw7t6ICRs_sJ_sfPc85RpxsqKMwqSniis0 ...
- hdu5392 Infoplane in Tina Town(LCM)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Infoplane in Tina Town Time Limit: 14000/ ...