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

前言html

咱们学习任何一个新框架时,确定都须要学习它的子页面用法,由于子页面是封装公共内容最好的容器。android

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

Fragmentgithub

下面咱们来学习Fragment的用法。sql

首先建立一个类MenuFragment继承Fragment;而后重写他的OnCreateView方法,代码以下:框架

[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,这点须要留意一下。ide

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

这样,咱们的子页面就作好了;下面须要作的就是到主页面里引用这个子页面。学习

引用Fragmentthis

在主页面的axml视图中,咱们定义一个fragment,而后编写代码以下:

<fragment
    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只能传图中给定类型的参数,想传自定义类型的参数是不能够的。

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

Button btnPara = this.FindControl<Button>("btnPara");
btnPara.Click += (s, e) =>
{
    Intent intent = new Intent(this, typeof(ParamActivity));
    intent.PutExtra("para1", "Kiba518");
    intent.PutExtra("para2", 518);
    StartActivity(intent);
};

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

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

 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

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

注:此文章为原创,任何形式的转载都请联系做者得到受权并注明出处!
若您以为这篇文章还不错,请点击下方的推荐】,很是感谢!

 

相关文章
相关标签/搜索