前言

我们学习任何一个新框架时,肯定都需要学习它的子页面用法,因为子页面是封装公共内容最好的容器。

在Xamarin里子页面为Fragment,翻译过来是片段的意思。

Fragment

下面我们来学习Fragment的用法。

首先创建一个类MenuFragment继承Fragment;然后重写他的OnCreateView方法,代码如下:

  1. [Activity(Label = "KibaApp")]
  2. public class MenuFragment : Fragment
  3. {
  4. public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
  5. {
  6. View view = inflater.Inflate(Resource.Layout.MenuFragment, container, false);
  7. return view;
  8. }
  9. }

在Fragment里也是有OnCreate方法可以被重写的,但这里我们要重写的是OnCreateView,这点需要留意一下。

接着,我们做了视图一个填充,将制定的MenuFragment.axml填充进视图View中;这里的子页面视图MenuFragment.axml只是普通的界面布局。

这样,我们的子页面就做好了;下面需要做的就是到主页面里引用这个子页面。

引用Fragment

在主页面的axml视图中,我们定义一个fragment,然后编写代码如下:

  1. <fragment
  2. android:layout_height="fill_parent"
  3. android:layout_width="wrap_content"
  4. android:layout_weight="1"
  5. android:id="@+id/fragment_menu"
  6. android:name="KibaApp.MenuFragment" />

如上代码所示,我们可以看到,最后一行的代码稍微有点特别,我们来分析一下。

这行代码中的name属性的值是KibaApp.MenuFragment,我们会发现这个值根本就是一个完全限定名。

也就是说fragment标签是利用自身的name属性储存的完全限定名,然后用其来反射找到我们的子页面,然后显示。

理解了原理后,我们运行程序看下子页面的效果。

如图所示,我们成功引入了子页面。

Activity之间传值

Android的页面之间传值是比较特别,它是使用Intent的PutExtra方法来传值的。

而PutExtra方法是一个被重载的方法,如下图所示:

也就是说,PutExtra只能传图中给定类型的参数,想传自定义类型的参数是不可以的。

下面我们定义一个按钮点击事件,然后传递两个参数给新的页面。

  1. Button btnPara = this.FindControl<Button>("btnPara");
  2. btnPara.Click += (s, e) =>
  3. {
  4. Intent intent = new Intent(this, typeof(ParamActivity));
  5. intent.PutExtra("para1", "Kiba518");
  6. intent.PutExtra("para2", 518);
  7. StartActivity(intent);
  8. };

如上述代码所示,我们向ParamActivity传递了两个参数。

下面我们去ParamActivity中接收这两个参数:

  1. protected override void OnCreate(Bundle savedInstanceState)
  2. {
  3. base.OnCreate(savedInstanceState);
  4. SetContentView(Resource.Layout.ParamActivity);
  5. string para1 = this.Intent.GetStringExtra("para1");
  6. int para2 = this.Intent.GetIntExtra("para2",-1);
  7. this.ShowToast("para1:" + para1 + "===para2:" + para2);
  8. }

如上述代码所示,我们使用Activity的属性Intent的GetStringExtra方法接收了第一个参数,而接收第二个参数,我们使用了GetIntExtra方法。

也就是说,在接收上个页面传来的数据时,我们需要根据数据类型,来调用该类型对应的接收方法,来接收数据。

参数传递界面如下图所示:

----------------------------------------------------------------------------------------------------

到此Activity传值与Fragment引用就介绍完了。

框架代码已经传到Github上了,欢迎大家下载。

相关文章:

C#-Xamarin利用ZXing.Net.Mobile进行扫码

C#-Xamarin的Android项目开发(三)——发布、部署、打包

C#-Xamarin的Android项目开发(二)——控件应用

C#-Xamarin的Android项目开发(一)——创建项目

Github地址:https://github.com/kiba518/KibaApp

----------------------------------------------------------------------------------------------------

注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

C#-Xamarin的Activity传值与Fragment引用的更多相关文章

  1. Activity往另外一个Activity传值,Fragment获取另外一个Activity里面的值。

    在oneActivity中实现跳转到MainActivity //intent 用来跳转另外一个MainActivity,bundle传值到MainActivity         Intent Ma ...

  2. activity传值到fragment

    1,初始化fragment时候: @Override public void onAttach(Activity activity) { /** 注册广播 */  initBroadcast(); s ...

  3. 【Android】安卓开发之activity如何传值到fragment,activity与fragment传值

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 大家知道,我们利用activity使 ...

  4. java集合中的传值和传引用

    在学习java集合过程中发现了传值和传引用的区别: 我们来看下面两句话 ●java集合就像一种容器,我们可以把多个对象(实际上是对象的引用),丢进该容器.(来自疯狂java讲义) ●当使用Iterat ...

  5. Go语言的传值与传引用

    Go语言里的传值与传引用大致与C语言中一致,但有2个特例,map和channel默认传引用,也就是说可以直接修改传入的参数,其他的情况如果不用指针的话,传入的都是参数的副本,在函数中修改不会改变调用者 ...

  6. java中的传值与传引用

    java函数中的传值和传引用问题一直是个比较“邪门”的问题,其实java函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一份拷贝,对于类类型传递的是该类参数的引用的拷贝,当在函数体中 ...

  7. Xamarin.Forms项目无法添加服务引用

    Xamarin.Forms项目无法添加服务引用 创建的Xamarin.Forms项目中,右击“引用”选项,在弹出的菜单中没有“添加服务引用”命令.这是由于该项目是支持Windows Phone 8.1 ...

  8. python函数传参是传值还是传引用?

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

  9. java 函数形参传值和传引用的区别

    java方法中传值和传引用的问题是个基本问题,但是也有很多人一时弄不清. (一)基本数据类型:传值,方法不会改变实参的值. public class TestFun { public static v ...

随机推荐

  1. 阿里Java架构师谈谈架构和如何成为一个Java架构师

    架构的定义 我们来看看软件架构的一般定义: 程序和计算系统软件体系结构是指系统的一个或多个结构. 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系. 该体系结构不是可操作的软件. 具体来 ...

  2. 工作中常用的JS函数整理分享(欢迎大家补充)

    今年在渣X工作整理的常用JS函数 今年来了渣X工作,我所在这个部门分工很奇怪,CSS竟然有专门的人在搞,开发PHP的人员需要处理JS,以至于有时候开发起来不是那么得心应手,感觉把JS和CSS拆开就像是 ...

  3. File文件的读写操作RandomAccessFile类

    1.Java提供了一个对文件随机访问的操作,访问包括读和写操作,该类名是RandomAccessFile,该类的读写是基于指针的操作. 2.RandomAccessFile在堆文件进行随机访问操作时有 ...

  4. Java 领域从传统行业向互联网转型你必须知道的事儿

    我为什么要写这篇文章 武林中,"天下武功出少林"指各门各派的武功都与少林武学有一定的渊源,技术也是相同的道理,对于Java领域的应用而言,传统行业与互联网行业的技术都来自J2SE和 ...

  5. js算法初窥02(排序算法02-归并、快速以及堆排序)

    上一篇,我们讲述了一些简单的排序算法,其实说到底,在前端的职业生涯中,不涉及node.不涉及后台的情况下,我目前还真的没想到有哪些地方可以用到这些数据结构和算法,但是我在前面的文章也说过了.或许你用不 ...

  6. 一起来读Netty In Action(一)

    Netty是一款异步事件驱动的网络应用程序框架,支持快速的开发可维护的高性能的面向协议的服务器和客户端.在网络编程中,阻塞.非阻塞.同步.异步经常被提到.同步(synchronous) IO和异步(a ...

  7. 7.app和app后端的通讯

    经常有开发者问:app和后端通讯是用http协议还是私有的协议?是用长连接还是短连接?通过阅读本文,帮你解除上面的疑问. (1)是用http协议还是私有的协议? 在间谍电视剧中,经常能看到间谍们的书信 ...

  8. python二维码生成器

    周小董简书主页二维码.png   周小董博客主页二维码.png 现在,我们生活中到处可以看到二维码.它有啥好处呢?它具有信息容量大.可靠性高.可表示汉字及图象多种文字信息.保密防伪性强等优点. 我们生 ...

  9. ActiveJDBC 学习笔记

    官网: http://javalite.io/getting_started

  10. Hibernate用注解生成表

    User.java实体来 package com.tao.pojo; import javax.persistence.Column; //用注解的方式生成表 import javax.persist ...