[英]C# Android Xamarin - if-else statement not working
我在C#代碼中使用的if-else語句有問題。 目前,我正在MS Visual Studio中使用Xamarin構建應用程序。 我希望事件“ uitrekenen”檢查三個編輯對象是否實際具有值。 如果沒有,我希望對象“ totaalTekst”顯示類似“請填寫所有內容”之類的消息。 在手機上調試代碼時,出現錯誤。 該錯誤必須與事件“ uitrekenen”有關,因為沒有此事件(如您在此處看到的),我不會得到任何錯誤。 代碼可能有點混亂,因為我為對象使用了荷蘭語名稱。 我希望這里的任何人都知道可能是什么問題! 感謝您的幫助,如果您對我的問題有任何不清楚的地方; 請問!
這是代碼:我的問題特別涉及最后一部分,其中包含事件“ uitrekenen”。
using Android.OS; // vanwege Bundle
using Android.App; // vanwege Activity
using Android.Widget; // vanwege TextView
using Android.Graphics; // vanwege Color
using System;
[ActivityAttribute(Label = "Leeftijd", MainLauncher = true)]
public class LeeftijdApp : Activity
{
EditText dagEdit;
EditText maandEdit;
EditText jaarEdit;
TextView totaalTekst;
protected override void OnCreate(Bundle b)
{
base.OnCreate(b);
TextView dagVerzoek;
dagVerzoek = new TextView(this);
dagVerzoek.Text = "DD:";
TextView maandVerzoek;
maandVerzoek = new TextView(this);
maandVerzoek.Text = "MM:";
TextView jaarVerzoek;
jaarVerzoek = new TextView(this);
jaarVerzoek.Text = "JJJJ:";
dagEdit = new EditText(this);
maandEdit = new EditText(this);
jaarEdit = new EditText(this);
Button knop;
knop = new Button(this);
knop.Text = "Klik hier!";
totaalTekst = new TextView(this);
totaalTekst.Text = "Hallo daar!";
knop.Click += uitrekenen;
LinearLayout stapel;
stapel = new LinearLayout(this);
stapel.Orientation = Orientation.Vertical;
stapel.AddView(dagVerzoek);
stapel.AddView(dagEdit);
stapel.AddView(maandVerzoek);
stapel.AddView(maandEdit);
stapel.AddView(jaarVerzoek);
stapel.AddView(jaarEdit);
stapel.AddView(knop);
stapel.AddView(totaalTekst);
this.SetContentView(stapel);
}
protected void uitrekenen(object o, EventArgs ea)
{
if (dagEdit != null && maandEdit != null && jaarEdit != null)
{
int DD = int.Parse(dagEdit.Text);
int MM = int.Parse(maandEdit.Text);
int JJJJ = int.Parse(jaarEdit.Text);
}
else
{
totaalTekst.Text = "Vul alle waarden in!";
}
}
}
首先,尋求幫助是一個玩笑,但甚至沒有翻譯英語代碼。 但是好吧
您的代碼將因以下原因而崩潰:
int.Parse(tfEdit.Text);
當輸入不可解析時,int.Parse會引發異常,如果您不想捕獲該異常,則可以使用int.TryParse
因為uitrekenen方法在主線程上執行,並且您沒有在該方法中捕獲任何異常,所以主線程將具有未處理的異常,這將使應用程序崩潰。
因此,解決方案是使用以下兩種解決方案之一:
try{
int DD = int.Parse(dagEdit.Text);
int MM = int.Parse(maandEdit.Text);
int JJJJ = int.Parse(jaarEdit.Text);
}catch(Exception ex){
//do whatever you want with your exception
}
要么
int DD,MM,JJJJ;
int.TryParse(dagEdit.Text,DD);
int.TryParse(maandEdit.Text,MM);
int.TryParse(jaarEdit.Text,JJJJ);
另外,您不應該檢查文本字段對象是否為null,因為您知道它們是初始化的,但是您應該檢查.Text屬性是否為null
if (dagEdit != null && maandEdit != null && jaarEdit != null) {...}
您檢查對象,但需要檢查值 。
像那樣:
if (dagEdit.Text != "" ...) {...}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.