前言 我們學習任何一個新框架時,肯定都需要學習它的子頁面用法,因為子頁面是封裝公共內容最好的容器。 在Xamarin裡子頁面為Fragment,翻譯過來是片段的意思。 Fragment 下麵我們來學習Fragment的用法。 首先創建一個類MenuFragment繼承Fragment;然後重寫他的O ...
前言
我們學習任何一個新框架時,肯定都需要學習它的子頁面用法,因為子頁面是封裝公共內容最好的容器。
在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
----------------------------------------------------------------------------------------------------
註:此文章為原創,歡迎轉載,請在文章頁面明顯位置給出此文鏈接!
若您覺得這篇文章還不錯,請點擊下方的【推薦】,非常感謝!