C#setOnTouchListener建议

时间:2014-08-09 13:15:30

标签: c# android xamarin

大家好我试图为一个程序制作一个虚拟的keyborard。我制作了两个EditText和一个数字键盘:

using System;

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


namespace SOLVER
{
    [Activity (Label = "SOLVER", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        Button Button1,Button2,....;
        EditText a,b;   

        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);
            SetContentView (Resource.Layout.Main);
            SolveButton ();

                    Button1 = FindViewById<Button> (Resource.Id.butonul1);
                    .....................................................
                    a = FindViewById<EditText> (Resource.Id.A);
                    b= FindViewById<EditText> (Resource.Id.B);

            a.Click += (object sender, EventArgs e) => {
                ButtonClick (a);
            };
        }

        private void ButtonClick ( EditText x )
        {
        Button1.Click += delegate {
        x.Text = "1";
             };
        }       
    }
}

但如果我多次点击EditText,它会显示nr 1的点击次数。

我尝试改变

    private void ButtonClick ( EditText x )
    {
    Button1.Click += delegate {
    x.Text = "1";
         };

使用:

    private void ButtonClick ( EditText x )
    {
    Button1.Click -= delegate {
    x.Text = "1";
         };

该程序不会在EditBox中显示任何内容。 最后我想用这个函数setOnTouchListener切换:

    Button1.setOnTouchListener(new View.OnTouchListener()
        {
            public boolean onTouch(View arg0, MotionEvent arg1)
            {
                x.Text = "1";
            }
        });

我得到两个错误:

在第二行

-expected}。 - 命名空间不能直接包含字段或方法等成员。在最后一行。

我忘了提到我使用Xamarin。如果你能告诉我我做错了什么或其他想法请告诉我。提前谢谢你。

1 个答案:

答案 0 :(得分:0)

听起来你可能放了这个片段:

Button1.setOnTouchListener(new View.OnTouchListener()
        {
            public boolean onTouch(View arg0, MotionEvent arg1)
            {
                x.Text = "1";
            }
        });

在您的类/命名空间之外。检查花括号并确保代码实际位于MainActivity类中。