zoukankan      html  css  js  c++  java
  • C#-Xamarin的Activity传值与Fragment引用

    前言

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

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

    Fragment

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

    首先创建一个类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,这点需要留意一下。

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

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

    引用Fragment

    在主页面的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

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

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

     

  • 相关阅读:
    加分二叉树
    香甜的黄油 Sweet Butter
    09.22今日暂时停更题解
    能量项链
    转圈游戏
    字串变换
    关押罪犯
    选择客栈
    神经网络
    未整理算法的总结
  • 原文地址:https://www.cnblogs.com/kiba/p/10556823.html
Copyright © 2011-2022 走看看