Xamarin.Android開發實踐(二)

原文:Xamarin.Android開發實踐(二)html

1、準備

開始學習本教程前必須先完成該教程http://www.cnblogs.com/yaozhenfa/p/xamarin_android_quickstart.html 不然將沒法繼續。

 

2、界面

1.打開Resources/layout/Main.axml文件,並在Call Button下方繼續加入一個按鈕,並設置其id爲@+id/CallHistoryButton同時設置Text爲@string /callHistory(這個實際上是一個字符串資源的標識符,後面咱們會添加該資源):

 

3、資源

1.打開Resources/values/Strings.xml文件

 

2.並在其中加入一個name爲callHistory的字符串資源:

 

3.回到Main.axml能夠看到最後一個button顯示的字符串變掉了:

 

4.以前的Call button是經過代碼的方式禁用的,此次咱們將CallHistory Button經過屬性該改變:

 

能夠看到按鈕被禁用了:android

 

4、代碼

1.右擊項目,新建一個名爲CallHistoryActivity的活動:

 

2.打開剛纔新建的活動,修改該活動的標題名稱,繼承的類並顯示傳遞過來的字符串數組:

namespace Phoneword_Droid
{
    [Activity(Label = "@string/callHistory")]
    public class CallHistoryActivity : ListActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            //從意圖中獲取傳遞過來的參數
            var phoneNumbers = Intent.Extras.GetStringArrayList("phone_numbers") ?? new string[0];

            //將字符串數組顯示到列表控件中(由於繼承的是ListActivity因此整個視圖就是一個列表)
            this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);

            //關於ArrayAdapter的第二個參數,其實就是指定列表中每一個項的視圖,後面咱們會經過自定義的方式控制列表的項
        }
    }
}

 

3.回到MainActivity.cs中,既然要顯示歷史記錄,那麼天然就必需要可以保存因此咱們須要定義一個變量:

     [Activity(Label = "Phoneword_Droid", MainLauncher = true, Icon = "@drawable/icon")]
     public class MainActivity : Activity
     {
         static readonly List<string> phoneNumbers = new List<string>();

 

4.而後還要爲callHistoryButton綁定監聽事件,以便打開另外一個活動(在OnCreate後面繼續追加):

Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton);
            callHistoryButton.Click += (e, t) =>
            {
                //指定意圖須要打開的活動
                var intent = new Intent(this, typeof(CallHistoryActivity));
                //設置意圖傳遞的參數
                intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
                StartActivity(intent);
            };

 

5.咱們缺乏一個添加歷史記錄的方法,這裏咱們應該將其放入對話框的Call方法中,這樣只要撥打了的電話纔會進入到歷史記錄中:

//撥打按鈕
                callDialog.SetNeutralButton("Call", delegate
                {
                    //將電話加入到歷史記錄列表中
                    phoneNumbers.Add(translatedNumber);

                    //若是callHistoryButton的定義在這段代碼後面將會出錯,因此咱們這個時候須要將
                    //Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton); 代碼提早
                    callHistoryButton.Enabled = true;

                    //使用意圖撥打電話
                    var callIntent = new Intent(Intent.ActionCall);

                    //將須要撥打的電話設置爲意圖的參數
                    callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
                    
                    StartActivity(callIntent);
                });

 

 

5、運行

 

相關文章
相關標籤/搜索