大叔也说Xamarin~Android篇~Activity之间传递数组
原文:大叔也说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,最后,我们看一下大叔的程序执行的最终效果。

第二个页面

呵呵,怎么样,挺有意思吧!

posted on 2016-02-01 11:20 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/5174859.html

大叔也说Xamarin~Android篇~Activity之间传递数组相关推荐

  1. 大叔也说Xamarin~Android篇~环境部署与破解

    原文:大叔也说Xamarin~Android篇~环境部署与破解 现在移动开发很HOT,以至于很多人都转向了它,大叔也不例外,这次有机制接触一下xamarin这个东西,其实之前也用于xamarin,只是 ...

  2. android 不同activity之间传递数据

    1> 不同activity之间传递数据: Intent intent=new Intent(); intent.setClass(activity1.this,activity2.class); ...

  3. 17开年第一篇Activity之间传递ListT 以及T对象类型数据的方法

    现在转眼都十三了,大家都工作了,自己确还没有在家里闲得慌于是就做个App,谁知道就遇到了Activity间传递实例以及List<T>数据的问题.网上同类型的文章很多,我写只是为了做个笔记预 ...

  4. 大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session

    回到目录 事情是这样的,我们最近开了一个APP,主要使用xamarin做了一个登陆,它与服务器API进行数据通讯,当用户名密码正确去,跳转到新的activity,并在webview控件中打开服务端的H ...

  5. android在activity之间传递map类型值

    仅仅是记录一下: A activity: intent.putExtra("detail_info",map); B activity: Map detailinfo=(HashM ...

  6. 【转】 android之如何在两个activity之间传递handler_利用broadcast广播机制

    原文:http://blog.csdn.net/jason0539/article/details/18075293 这算是如何在两个activity之间传递handler的解决方案二了,解决方案一见 ...

  7. ​Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]

    Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable] 在Android中的不同Activity之间传递对象,我们可以考虑采用Bun ...

  8. Android Activity之间传递类对象

    一.简介 开发过程中,Activity之间传递数据是必不可少的,Android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供了相关的p ...

  9. Android截屏幕实现,截取屏幕为bitmap,并保存进手机图库,activity之间传递bitmap对象

    Android截屏幕实现,截取超过一屏幕的长图,截取当前显示的一屏幕的图片,截图屏幕内的部分图片,并保存到本地,更新到手机图库中:当然还有一种bitmap在activity之间传递的需求 踩坑-–&g ...

最新文章

  1. iloc loc 区别
  2. [Android工具]更新音乐下载软件,MP3音乐无损音乐下载器
  3. pandas 读取所有表头_像用excel一样用pandas
  4. 关于spring mvc时间类型绑定失败解决方法
  5. 动画学习android,Android动画学习
  6. Serverless 如何做到快速发布?微应用平台技术实践
  7. redis——相关问题汇总
  8. 千万别说你会Python!如果不知道这10个Python包!
  9. go:embed 的使用
  10. Redis系列-生产应用篇-分布式锁(5)-单进程Redis分布式锁的Java实现(Redisson使用与底层实现)-原子锁类
  11. CSOL NST1007 V1.0 完整汉化版发布
  12. 东财《社会统计学》综合作业
  13. mikrotik桥接TP-link教程
  14. 直接把结果输出到打印机
  15. 抖音视频突然播放量少了很多,抖音限流怎么查看?
  16. GSM Foxit Reader
  17. BZOJ2054疯狂的馒头
  18. OC 5266 降压型恒流驱动器,ESOP8 封装,高端电流检测
  19. BIOS追code之PEI phase
  20. BCG Visual Manager

热门文章

  1. CTFshow 文件上传 web162
  2. CTFshow php特性 web136
  3. Watershed函数
  4. 提取图像的边界,用数字标记不同的目标边界
  5. java 自定义 operator_java8 自定义Collector
  6. C语言课程设计选哪个,C语言课程设计选题及要求.docx
  7. C#中的三种timer
  8. Spring入门第一例
  9. 分治最小割 学习总结
  10. 在pcduino上实现图像识别的程序