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