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

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

注:此文章爲原創,任何形式的轉載都請聯繫做者得到受權並註明出處!
若您以爲這篇文章還不錯,請點擊下方的推薦】,很是感謝!

 

相關文章
相關標籤/搜索