大叔也说Xamarin~Android篇~Activity之间传递数组

简介: 原文:大叔也说Xamarin~Android篇~Activity之间传递数组我们在开发应用程序时,不可能只使用一个Layout或者一个Activity,比如你个管理系统,要求用户先登陆然后再使用,这时你至少要有两个activity吧,先登陆一个,然后成功后需要跳到别一个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,最后,我们看一下大叔的程序执行的最终效果。

第二个页面

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

 

目录
相关文章
|
3月前
|
Android开发 开发者
Android UI设计: 请解释Activity的Theme是什么,如何更改应用程序的主题?
Android UI设计: 请解释Activity的Theme是什么,如何更改应用程序的主题?
41 1
|
3月前
|
数据库 Android开发 开发者
Android基础知识:请解释Activity的生命周期。
Android基础知识:请解释Activity的生命周期。
41 2
|
6月前
|
存储 SQL 人工智能
Android Activity启动流程一:从Intent到Activity创建
Android Activity启动流程一:从Intent到Activity创建
|
2月前
|
Android开发
[Android 四大组件] --- Activity
[Android 四大组件] --- Activity
22 1
|
3月前
|
Android开发
Android基础知识:什么是Fragment?与Activity的区别是什么?
Android基础知识:什么是Fragment?与Activity的区别是什么?
271 54
|
4月前
|
Android开发
Android Studio APP开发入门之活动Activity中启停活动页面的讲解及实战(附源码,包括Activity的启动结束、生命周期、跳转等)
Android Studio APP开发入门之活动Activity中启停活动页面的讲解及实战(附源码,包括Activity的启动结束、生命周期、跳转等)
41 0
|
4月前
|
XML 安全 Java
Android Studio App开发入门之活动Activity中为活动补充附加信息讲解及实战(附源码 超详细必看)
Android Studio App开发入门之活动Activity中为活动补充附加信息讲解及实战(附源码 超详细必看)
35 0
|
4月前
|
Android开发
Android Studio App开发入门之在活动之间传递消息(附源码 超详细必看)(包括显示和隐式Intent,向上一个和下一个Activity发送数据)
Android Studio App开发入门之在活动之间传递消息(附源码 超详细必看)(包括显示和隐式Intent,向上一个和下一个Activity发送数据)
43 0
|
5月前
|
Android开发
安卓activity管理器
安卓activity管理器
27 0
|
6月前
|
开发工具 Android开发 iOS开发
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
使用vs2019学习xamarin时,创建新程序。使用模拟器真机等测试都报错如下图错误: ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/5877188/20231030-de8ce5fd.png?x-cos-security-token=r4KyZDEowPT0kGTL0LqE8EnwfN1Nzexadb05dcffed3939ff8d7591c528c01706nvpGSE93QwHpZM8NwhJNTZctNRQa0l3KDhEnqj8P7d8t
63 0
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件