C#安卓Xamarin-if-else语句不起作用

本文关键字:不起作用 语句 Xamarin-if-else 安卓 | 更新日期: 2023-09-27 18:23:46

我在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!";
    }
}
}

C#安卓Xamarin-if-else语句不起作用

首先,请求帮助却不翻译英语代码是个笑话。但还好

您的代码将因以下行而崩溃:

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);

此外,您不应该检查textfield对象是否为null,因为您知道它们已初始化,但您应该检查空的.Text属性

if (dagEdit != null && maandEdit != null && jaarEdit != null) {...}

您检查对象,但需要检查

像这样:

if (dagEdit.Text != "" ...) {...}