大叔也说Xamarin~Android篇~Activity之间传递数组
我们在开发应用程序时,不可能只使用一个Layout或者一个Activity,比如你个管理系统,要求用户先登陆然后再使用,这时你至少要有两个activity吧,先登陆一个,然后成功后需要跳到别一个Activity,这就遇到了多个Activity之间传递数据的问题,这也是今天我们要说的!
先聊聊Activity
首先一个Activity都会去继承Activity类,这个类里有方法已经替我们实现,我们可以把activity看做是MVC里的Action,即它负责渲染我们的页面,组件页面上所需要的数据等,我们先来看看一个Activity在渲染页面时要经历的几个事件(方法),这些方法我们都可以在自定义的activity中去重写它!
onCreate:在这里创建界面,做一些数据的初始化工作;
onStart: 到这一步变成“用户可见不可交互”的状态;
onResume:变成和用户可交互的,(在Activity栈系统通过栈的方式管理这些Activity,即当前Activity在栈的最上端,运行完弹出栈,则回到上一个Activity);
onPause:到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降 低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来。
onStop:变得不可见 ,被下一个activity覆盖了
onDestroy:这是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它,如果你有 一个Progress Dialog在线程中运行,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛异常。
onPause,onstop, onDestroy,三种状态下 activity都有可能被系统kill 掉。
再说说Activity之间的数据传递
/// <summary>/// 点选item 后的事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>void listView_ItemClick(object sender, AdapterView.ItemClickEventArgs e){Toast.MakeText(this, "你选择了 " + datas[e.Position].Title, ToastLength.Short).Show();Intent intent = new Intent(this, typeof(UserInfoLayoutActivity));/* 通过Bundle对象存储需要传递的数据 */Bundle bundle = new Bundle();/*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/intent.PutExtra("Title", datas[e.Position].Title);intent.PutExtra("Desc", datas[e.Position].Desc);intent.PutExtra("AssistsCount", datas[e.Position].AssistsCount);intent.PutExtra("Fails", datas[e.Position].Fails);intent.PutExtra("Score", datas[e.Position].Score);intent.PutExtra("Level", datas[e.Position].Level);intent.PutExtra("Image", datas[e.Position].Image);/*把bundle对象assign给Intent*/intent.PutExtras(bundle);StartActivity(intent);}
上面代码是在某个项目被单击后所触发的事件,而在事件建立了Intent对象,它是跨Activty传值的基础,之后PutExtra为它们赋值,它相当于一个hash表,OK,下面我们再来看看第二页如何去接受这些数据
protected override void OnCreate(Bundle savedInstanceState){base.OnCreate(savedInstanceState);SetContentView(Resource.Layout.UserInfoLayout);//指定要去渲染的视图 var listView = FindViewById<ListView>(Resource.Id.userInfoViewMain);listView.Adapter = new UserAdapter(this, new UserInfo{Title = Intent.GetStringExtra("Title"),Desc = Intent.GetStringExtra("Desc"),AssistsCount = Intent.GetIntExtra("AssistsCount", 0),Level = Intent.GetIntExtra("Level", 0),Fails = Intent.GetIntExtra("Fails", 0),Image = Intent.GetIntExtra("Image", 0),Score = Intent.GetIntExtra("Score", 0),});}
代码中的OnCreate是每个Activity所具有的方法,即它是进入Activity后,第一个要执行的方法,这里一般是建立视图,初始化数据,加载PartialView,最后,我们看一下大叔的程序执行的最终效果。
第二个页面
呵呵,怎么样,挺有意思吧!
转载于:https://www.cnblogs.com/lonelyxmas/p/5174859.html
大叔也说Xamarin~Android篇~Activity之间传递数组相关推荐
- 大叔也说Xamarin~Android篇~环境部署与破解
原文:大叔也说Xamarin~Android篇~环境部署与破解 现在移动开发很HOT,以至于很多人都转向了它,大叔也不例外,这次有机制接触一下xamarin这个东西,其实之前也用于xamarin,只是 ...
- android 不同activity之间传递数据
1> 不同activity之间传递数据: Intent intent=new Intent(); intent.setClass(activity1.this,activity2.class); ...
- 17开年第一篇Activity之间传递ListT 以及T对象类型数据的方法
现在转眼都十三了,大家都工作了,自己确还没有在家里闲得慌于是就做个App,谁知道就遇到了Activity间传递实例以及List<T>数据的问题.网上同类型的文章很多,我写只是为了做个笔记预 ...
- 大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session
回到目录 事情是这样的,我们最近开了一个APP,主要使用xamarin做了一个登陆,它与服务器API进行数据通讯,当用户名密码正确去,跳转到新的activity,并在webview控件中打开服务端的H ...
- android在activity之间传递map类型值
仅仅是记录一下: A activity: intent.putExtra("detail_info",map); B activity: Map detailinfo=(HashM ...
- 【转】 android之如何在两个activity之间传递handler_利用broadcast广播机制
原文:http://blog.csdn.net/jason0539/article/details/18075293 这算是如何在两个activity之间传递handler的解决方案二了,解决方案一见 ...
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable] 在Android中的不同Activity之间传递对象,我们可以考虑采用Bun ...
- Android Activity之间传递类对象
一.简介 开发过程中,Activity之间传递数据是必不可少的,Android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供了相关的p ...
- Android截屏幕实现,截取屏幕为bitmap,并保存进手机图库,activity之间传递bitmap对象
Android截屏幕实现,截取超过一屏幕的长图,截取当前显示的一屏幕的图片,截图屏幕内的部分图片,并保存到本地,更新到手机图库中:当然还有一种bitmap在activity之间传递的需求 踩坑-–&g ...
最新文章
- iloc loc 区别
- [Android工具]更新音乐下载软件,MP3音乐无损音乐下载器
- pandas 读取所有表头_像用excel一样用pandas
- 关于spring mvc时间类型绑定失败解决方法
- 动画学习android,Android动画学习
- Serverless 如何做到快速发布?微应用平台技术实践
- redis——相关问题汇总
- 千万别说你会Python!如果不知道这10个Python包!
- go:embed 的使用
- Redis系列-生产应用篇-分布式锁(5)-单进程Redis分布式锁的Java实现(Redisson使用与底层实现)-原子锁类
- CSOL NST1007 V1.0 完整汉化版发布
- 东财《社会统计学》综合作业
- mikrotik桥接TP-link教程
- 直接把结果输出到打印机
- 抖音视频突然播放量少了很多,抖音限流怎么查看?
- GSM Foxit Reader
- BZOJ2054疯狂的馒头
- OC 5266 降压型恒流驱动器,ESOP8 封装,高端电流检测
- BIOS追code之PEI phase
- BCG Visual Manager