一、 准備工作
1.新建一個項目取名為phoneword
2.在項目創建好之后,讓我們展開“Resources”文件夾然后找到並打開該文件夾下的“layout”文件夾,雙擊main.axml在Android設計器中打開它,這是我們的布局文件。
3.讓我們選擇“你好世界,請單擊我”在設計表面上的按鈕,並按刪除鍵將其刪除。從工具箱(左側的區域),在搜索字段中輸入text,並將一個Text (Large)控件拖動到設計圖面中心的區域:
4.選擇我們拖進去控件,我們可以在屬性窗口中修改輸入的文本
5.然后我們拖一個簡單的文本控件到設計器,並放置在剛才我們添加的控件下面
6.在設計器中選中剛才添加的控件,我們可以在屬性窗口中我們可以改變它的id和text
7.讓我們拖動一個“按鈕”到設計器,並改變它的id和text
8.然后我們再拖一個按鈕在剛才的按鈕下面,並設置其屬性,然后ctrl+s保存一下
二、代碼
1.現在我們來添加一些代碼,右擊項目,選擇“添加》新建項“添加一個c#代碼文件取名為PhoneTranslator.cs
2.將下列代碼copy進去

1 namespace Phoneword 2 { 3 public static class PhonewordTranslator 4 { 5 public static string ToNumber(string raw) 6 { 7 if (string.IsNullOrWhiteSpace(raw)) 8 return ""; 9 else 10 raw = raw.ToUpperInvariant(); 11 12 var newNumber = new StringBuilder(); 13 foreach (var c in raw) 14 { 15 if (" -0123456789".Contains(c)) 16 newNumber.Append(c); 17 else 18 { 19 var result = TranslateToNumber(c); 20 if (result != null) 21 newNumber.Append(result); 22 } 23 // otherwise we've skipped a non-numeric char 24 } 25 return newNumber.ToString(); 26 } 27 static bool Contains(this string keyString, char c) 28 { 29 return keyString.IndexOf(c) >= 0; 30 } 31 static int? TranslateToNumber(char c) 32 { 33 if ("ABC".Contains(c)) 34 return 2; 35 else if ("DEF".Contains(c)) 36 return 3; 37 else if ("GHI".Contains(c)) 38 return 4; 39 else if ("JKL".Contains(c)) 40 return 5; 41 else if ("MNO".Contains(c)) 42 return 6; 43 else if ("PQRS".Contains(c)) 44 return 7; 45 else if ("TUV".Contains(c)) 46 return 8; 47 else if ("WXYZ".Contains(c)) 48 return 9; 49 return null; 50 } 51 } 52 }
3.下一步,我們將添加代碼來連接用戶。讓我們雙擊項目中的MainActivity類打開它(也就是Android中的活動)。
4.找到MainActivity類中的Oncreate方法,刪除模板中的代碼,我們將在Oncrate中書寫代碼
5.下面我們需要找到我們在設計器中添加的控件,讓我們在oncreate方法中添加以下代碼(在SetContentView方法后面)。

1 EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText); 2 Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton); 3 Button callButton = FindViewById<Button>(Resource.Id.CallButton);
6.下面我們添加Translate button點擊事件的代碼 在上一步后面

// 設置callbutton為不能點 callButton.Enabled = false; // 設置translatedNumber為空 string translatedNumber = string.Empty; //添加translateButton的點擊事件 translateButton.Click += (object sender, EventArgs e) => { //把用戶的電話號碼轉換為數字 translatedNumber = PhonewordTranslator.ToNumber(phoneNumberText.Text); if (String.IsNullOrWhiteSpace(translatedNumber))//如果有空或者空格 { callButton.Text = "Call"; callButton.Enabled = false; } else { callButton.Text = "Call " + translatedNumber; callButton.Enabled = true; } };
7. 然后添加Call butto點擊事件的代碼

//設置callButton的點擊事件 callButton.Click += (object sender, EventArgs e) => { //在按鈕被點后嘗試打電話 var callDialog = new AlertDialog.Builder(this); callDialog.SetMessage("Call " + translatedNumber + "?"); callDialog.SetNeutralButton("Call", delegate { // 創建打電話事件 var callIntent = new Intent(Intent.ActionCall); callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber)); StartActivity(callIntent); }); callDialog.SetNegativeButton("Cancel", delegate { }); //彈出提示框 callDialog.Show(); };
8.最后讓我們給應用程序添加一個撥打電話的權限:右擊項目》屬性》Android Manifest 勾選call_phone
9.右擊解決方案》,重新生成解決方案,如果沒有報錯表示我們程序已經完成了,點擊運行按鈕運行,最后運行效果如圖。