簡體   English   中英

C#Android Xamarin-if-else語句不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM