C#-Xamarin的Activity传值与Fragment引用

简介: C#-Xamarin的Activity传值与Fragment引用前言我们学习任何一个新框架时,肯定都需要学习它的子页面用法,因为子页面是封装公共内容最好的容器。在Xamarin里子页面为Fragment,翻译过来是片段的意思。

C#-Xamarin的Activity传值与Fragment引用
前言

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

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

Fragment

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

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

1
2
3
4
5
6
7
8
9
[Activity(Label = "KibaApp")]
public class MenuFragment : Fragment
{

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    View view = inflater.Inflate(Resource.Layout.MenuFragment, container, false);
    return view;
}

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

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

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

引用Fragment

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

1
2
3
4
5
6

android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:layout_weight="1"
android:id="@+id/fragment_menu"
android:name="KibaApp.MenuFragment" />

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

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

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

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

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

Activity之间传值

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

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

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

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

1
2
3
4
5
6
7
8
Button btnPara = this.FindControl

Intent intent = new Intent(this, typeof(ParamActivity));
intent.PutExtra("para1", "Kiba518");
intent.PutExtra("para2", 518);
StartActivity(intent);

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

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

1
2
3
4
5
6
7
8
protected override void OnCreate(Bundle savedInstanceState)
{

base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.ParamActivity);
string para1 =  this.Intent.GetStringExtra("para1");
int para2 = this.Intent.GetIntExtra("para2",-1);
this.ShowToast("para1:" + para1 + "===para2:" + para2);

}
如上述代码所示,我们使用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
原文地址https://www.cnblogs.com/kiba/p/10556823.html

相关文章
|
24天前
|
开发框架 C# Android开发
C#一分钟浅谈:Xamarin 移动应用开发
随着移动设备的普及,Xamarin 成为跨平台移动应用开发的重要工具,允许开发者使用 C# 编写一次代码,即可在 iOS、Android 和 Windows Phone 上运行。本文介绍 Xamarin 的基本概念、开发环境搭建、常见问题及解决方案,并通过代码示例详细讲解。
40 0
【C#视频】方法重载、函数重载、传值
【C#视频】方法重载、函数重载、传值
|
JSON 前端开发 JavaScript
C# MVC 向页面传值方式
C# MVC 向页面传值方式
C# Xamarin数据绑定入门基础
C# Xamarin数据绑定入门基础
172 0
C# Xamarin数据绑定入门基础
|
JSON 前端开发 API
C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)
原文:C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD) 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.
1037 1
|
Android开发
C#-Xamarin利用ZXing.Net.Mobile进行扫码
C#-Xamarin利用ZXing.Net.Mobile进行扫码 前言 很多人觉得Xamarin的开源少,没法用来开发项目。 但,实际上Xamarin已经有很多开源代码了;只要不是特别特殊的项目,基本上是都可以满足开发。
2067 0
|
C#
C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码
原文:C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.
1315 0
|
C#
C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
原文:C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.
1180 0
|
前端开发 C# 数据格式
C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码
原文:C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.
1280 0