EditText值是0?

时间:2017-03-20 13:27:49

标签: android xamarin.android

我在C#中测试了我的第一个应用程序。我的axml文件中有4个字段:2个字段,您可以输入两个数字,1个按钮和一个字段,该字段应该输出用户在单击按钮时输入的两个数字的相加。并且应用程序可以工作,但是当我点击我的按钮时,我总是得到0作为输出。所以问题可能是,我从EditText错误读取变量,也许?应该使用工具箱中的其他字段吗?我在Visual Studio中写作!这是我的代码:

 protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        SetContentView (Resource.Layout.Main);


        EditText zahl1 = FindViewById<EditText>(Resource.Id.zahl1);
        EditText zahl2 = FindViewById<EditText>(Resource.Id.zahl2);
        Button buttonErgebnis = FindViewById<Button>(Resource.Id.buttonErgebnis);
        TextView Ergebnis1 = FindViewById<TextView>(Resource.Id.emptyText);

        //convert string to int and save in variable 
        string a = zahl1.ToString();
        int Zahl1 = 99;
        int.TryParse(a, out Zahl1);

        string b = zahl2.ToString();
        int Zahl2 = 99;
        int.TryParse(a, out Zahl2);

        // add two numbers
        int ergebnis = Zahl1 + Zahl2;

        //output result if button is clicked 
        buttonErgebnis.Click += (sender, e) =>
            {
                Ergebnis1.Text = ergebnis.ToString();
            };

    }
你能看到问题吗?我认为它与我的程序有关,而不是从用户那里读取前两个数字......

抬头:我让它使用这段代码:

using Android.App;
using Android.Widget;
using Android.OS;


namespace OverWriteGPS

    [Activity(Label = "OverWriteGPS", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {


        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.Main);

            EditText zahl1 = FindViewById<EditText>(Resource.Id.zahl1);
            EditText zahl2 = FindViewById<EditText>(Resource.Id.zahl2);
            Button buttonErgebnis = FindViewById<Button>(Resource.Id.buttonErgebnis);
            TextView Ergebnis1 = FindViewById<TextView>(Resource.Id.emptyText);

            //output result if button is clicked 
            buttonErgebnis.Click += (sender, e) =>
            {
                //convert string to int and save in variable 
                string a = zahl1.Text;
                string b = zahl2.Text;
                int Zahl1, Zahl2, ergebnis;
                if ((int.TryParse(a, out Zahl1)) && (int.TryParse(b, out Zahl2)))
                {
                    ergebnis = Zahl1 + Zahl2;
                } else
                {
                    ergebnis = -1;
                }


                Ergebnis1.Text = ergebnis.ToString();
            };

        }

    }
}

2 个答案:

答案 0 :(得分:1)

点击按钮后,您必须执行总和

像这里移动添加:

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    SetContentView (Resource.Layout.Main);

    EditText zahl1 = FindViewById<EditText>(Resource.Id.zahl1);
    EditText zahl2 = FindViewById<EditText>(Resource.Id.zahl2);
    Button buttonErgebnis = FindViewById<Button>(Resource.Id.buttonErgebnis);
    TextView Ergebnis1 = FindViewById<TextView>(Resource.Id.emptyText);

    //output result if button is clicked 
    buttonErgebnis.Click += (sender, e) =>
        {
            //convert string to int and save in variable 
            string a = zahl1.ToString();
            int Zahl1 = 99;
            int.TryParse(a, out Zahl1);

            string b = zahl2.ToString();
            int Zahl2 = 99;
            int.TryParse(a, out Zahl2);

            // add two numbers
            int ergebnis = Zahl1 + Zahl2;

            Ergebnis1.Text = ergebnis.ToString();
        };

}

但是,您没有使用从用户输入中读取的值。出于某种原因,您使用99.您可能想要更改它。

答案 1 :(得分:0)

您需要获取EditText值,如下所示:

//output result if button is clicked 
buttonErgebnis.Click += (sender, e) =>
{
    //Need to get values of Zahl1  and Zahl2  here 
    string str1 = Zahl1  .Text; 
    string str2 = Zahl1  .Text; 
    // add two numbers
    int ergebnis = str1 + str2 ;
    Ergebnis1.Text = ergebnis.ToString();
};