Android Activity的四种经典传值方法
文/ http://blog.csdn.net/sk719887916/article/details/41723613 skay
开发中遇到多个activity的传值问题 相邻两个之间的传值 或者多个三个以上之间的传值问题
1 一般的注册或者登陆成功后 跳到某一新activity传值问题
2 注册界面需要选择性别 需要打开一个新的界面选择里面的信息回到当前activty的传值问题
3 设置界面需要某一界面选择的图片(但是还没上传服务),如果中间相隔几种activty时的传值。
目前有比较经典的四种比较经典的传值方法
一 如果是两个相邻activity之间的传值:
可以用Intent传值 对象和单个属性都可以
OneActivity 里设置
Intent intent = new Intent(OneActivity.this,TwoActivity.class); intent.putExtra("mEmail", mEmail); intent.putExtra("mPassword", mPassword); startActivity(intent);
TwoActivity 里取值
// 方法一 Intent getIntent = getIntent(); String mEmail = getIntent.getStringExtra("mEmail"); String mPassword = getIntent.getStringExtra("mPassword");
当然你也可以用bundle进行封装,然后进行传值,
Intent intent = new Intent(OneActivity.this,TwoActivity.class); Bundle bundle = new Bundle(); bundle.putString("mEmail", mEmail); bundle.putString("mPassword", mPassword); startActivity(intent);
public class Constant { public static String mEmail; public static String mPassword; }
OneActivity :
Intent intent = new Intent(OneActivity.this,TwoActivity.class); /*intent.putExtra("mEmail", mEmail); intent.putExtra("mPassword", mPassword);*/ Constant.mEmail = mEmail; Constant.mPassword =mPassword; startActivity(intent);
String mEmail = Constant.mEmail; String mPassword = Constant.mPassword; mEmailView.setText(mEmail); mPasswordView.setText(mPassword);
定义你需要传递的对象或者属性 在One中拿到user或者但多email和password, 去实例化赋值 然后再除了one的任何一个Activity中去取值使用 如果你的信息比较多 需要每个界面添加不同的属性给个这个对象USER 你可以拿到这个user不断去set属性值 到你最后一个界面使用的时候去取值使用就ok
,是不是挺方便的
startActivityForResult(intent,code); //code是请求码 int类型
2 two可以在finsh之前 将user或者某个属性扔给one界面
Intent rIntent = new Intent(); rIntent.putExtra("sex", mSex); rIntent.putExtra("address", mAddress); setResult(resultCode, getIntent()); finish();
resultCode 为返回码 用于区分从哪里返回。
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- // TODO Auto-generated method stub
- user.setName(data.getStringExtra("sex"))
- Toast.makeText(this, data.getStringExtra("sex"), 1).show();//得到返回的user
取出用户选择的性别 - super.onActivityResult(requestCode, resultCode, data);
- }
大致步骤
CallBack{
two中执行此接口方法就OK 这样A 就拿到了email了
方法二也适用任何类
"standard"(默认)
standard是默认的启动模式,即如果说明aunchMode属性,则自动就会使用这种启动模式。每次打开需开启新的activity
"singleTop"
如果要启动的这个Activity在当前Task中已经存在,并且还处于栈顶的位置,那么系统就不会再去创建一个该Activity的实例,而是调用栈顶Activity的onNewIntent()方法。声明成这种启动模式的Activity也可以被实例化多次,一个任务当中也可以包含多个这种Activity的实例。
举个例子来讲,一个任务的返回栈中有A、B、C、D四个Activity,其中A在最底端,D在最顶端。这个时候如果我们要求再启动一次D,并且D的启动模式是"standard",那么系统就会再创建一个D的实例放入到返回栈中,此时栈内元素为:A-B-C-D-D。而如果D的启动模式是"singleTop"的话,由于D已经是在栈顶了,那么系统就不会再创建一个D的实例,而是直接调用D Activity的onNewIntent()方法,此时栈内元素仍然为:A-B-C-D。
"singleTask"
这种启动模式表示,系统会创建一个新的任务,并将启动的Activity放入这个新任务的栈底位置。但是,如果现有任务当中已经存在一个该Activity的实例了,那么系统就不会再创建一次它的实例,而是会直接调用它的onNewIntent()方法。声明成这种启动模式的Activity,在同一个任务当中只会存在一个实例。注意这里我们所说的启动Activity,都指的是启动其它应用程序中的Activity,因为"singleTask"模式在默认情况下只有启动其它程序的Activity才会创建一个新的任务,启动自己程序中的Activity还是会使用相同的任务,
"singleInstance"
这种启动模式和"singleTask"有点相似,只不过系统不会向声明成"singleInstance"的Activity所在的任务当中再添加其它Activity。也就是说,这种Activity所在的任务中始终只会有一个Activity,通过这个Activity再打开的其它Activity也会被放入到别的任务当中。
------------------------------------------------------------横线中数据来自网络 特此说明-------------------------------------------------------------------------
通过设置启动模式我们可以轻而易举的回去到保留的数据 可以通过
onCreate(Bundle savedInstanceState)
中的bundle数据用于获取任务中的此界面记录的数据,然后恢复到本身activity中。
Android Activity的四种经典传值方法的更多相关文章
- Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式。
原文:Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式. Android Activity 的四种启动模 ...
- Android Activity的四种LaunchMode!!!
本文转自: http://marshal.easymorse.com/archives/2950. 写的非常好,分享给大家!!! 在多Activity开发中,有可能是自己应用之间的Activity跳转 ...
- Android学习记录(8)—Activity的四种加载模式及有关Activity横竖屏切换的问题
Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.以下逐一举例说明他们的区别: standard:Activity ...
- Android 关于Activity的四种启动模式的简单介绍
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standar ...
- Android学习笔记四:activity的四种启动模式
Activity有四种启动模式:standard,singleTop,singleTask,singleInstance. 1.standard:标准启动模式 默认模式,这个模式下启动的Activit ...
- Android中Activity的四种开发模式
Activity的四种启动模式:standard.singleTop.singleTask.singleInstance 清单文件中的Activity配置使用:android:launchMode ...
- 【Android进阶】Activity的四种加载模式
Activity的四种加载模式: 1.standard :系统的默认模式,一次跳转即会生成一个新的实例.假设有一个activity命名为Act1, 执行语句:startActivity(new Int ...
- Activity的四种启动模式
Activity有四种启动模式: 1. standard,默认的启动模式,只要激活Activity,就会创建一个新的实例,并放入任务栈中,这样任务栈中可能同时有一个Activity的多个实例. 2. ...
- Android按钮的四种点击事件
本文记录一下按钮的四种点击事件 第一种 public class MainActivity extends Activity { @Override protected void onCreate(B ...
随机推荐
- zookeeper分布式锁
摘要:分享牛原创,zookeeper使用,zookeeper锁在实际项目开发中还是很常用的,在这里我们介绍一下zookeeper分布式锁的使用,以及我们如何zookeeper分布式锁的原理.zooke ...
- Android图表库MPAndroidChart(十三)——简约的底部柱状图
Android图表库MPAndroidChart(十三)--简约的底部柱状图 我们继续上一讲,今天还是说下柱状图,这个图的话应该是用的比较多的,所有拿出来溜溜,先看下效果 我们还是来看下基本实现 一. ...
- Spring+EhCache缓存实例(详细讲解+源码下载)
一.ehcahe的介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider.Ehcache是一种广泛使用的开源Java分布式 ...
- 物料分类新增&更新
--新增 INV_ITEM_CATEGORY_PUB.Create_Category ( p_api_version IN NUMBER, p_init_msg_list IN VARCHAR2 DE ...
- activiti 数据库连接配置
1.1.1. 前言 在activiti 动态配置 activiti 监听引擎启动和初始化(高级源码篇)一文中,我们讲解了如何动态的配置DataSource 当我们程序配置了DataSource,act ...
- Hibernate通过SQL查询常量时只能返回第一个字符的解决方法
在Hibernate中如果通过 [java] view plaincopy session.createSQLQuery("select '合计' as name from dual&quo ...
- iOS中 CocoaPods Mac App的安装和使用 韩俊强的博客
CocoaPods Mac App的安装和使用 CocoaPods桌面应用版下载地址:https://cocoapods.org/app打开应用会提示你是否安装命令行工具,选择install就也可以在 ...
- java基础---Java---面试题---银行业务调度系统(线程同步锁、枚举、线程池)
银行业务调度系统的项目需求: 模拟实现银行业务调度系统逻辑,具体需求如下: Ø 银行内有6个业务窗口,1- 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口. Ø 有三种对应类 ...
- MySQL设计软件登录模块
学了一段时间的Java了,思量着做一点简单的小模块的东西吧,于是就有了下面的这个简单的小案例. 大致实现的功能就是注册于登录还有就是用到了一点,分层思想.仅此而已,所以非常的适合新手围观. 建立好数据 ...
- TCP协议三次握手与四次挥手详解
在计算机网络的学习中TCPi协议与Http协议是我们必须掌握的内容,其中Tcp协议属于传输层,而Http协议属于应用层,本博客主要讲解Tcp协议中的三次握手与四次挥手,关于Http协议感兴趣的可以参看 ...