在单声道android(C#)的编辑文本控件中获取用户输入

时间:2013-11-18 08:34:24

标签: c# android xamarin.android

我写了一个简单的Android应用来测试c#中的单声道android。 我的程序是有一个Edit Text控件(或纯文本,这是我在main.axml文件中创建UI时控件的名称),并且在编辑文本中有一个button.user类型的东西,然后按下按钮我想要的只是获取用户输入。但我无法通过Text属性访问它。

旁注:我的主要程序是通过Socket将此文本发送到服务器,但是当我想获取字符串并将其放入缓冲区时,它总是不返回任何内容。 这是我的测试程序:

     protected override void OnCreate(Bundle bundle) {
         base.OnCreate(bundle);
         SetContentView(Resource.Layout.Main);
         EditText input = FindViewById(Resource.Id.editText1);
         Button send = FindViewById<Button>(Resource.Id.button1);
         send.Click += (sender, e) => {             
              string str = input.Text;
         };
     }

这是我的实际套接字程序:

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

        SetContentView(Resource.Layout.Main);
        EditText iptext = FindViewById<EditText>(Resource.Id.editText1);
        EditText porttext = FindViewById<EditText>(Resource.Id.editText2);
        EditText input = FindViewById<EditText>(Resource.Id.editText3);
        Button send = FindViewById<Button>(Resource.Id.button1);
        send.Click += (sender, e) => {
            *connetpoint = new IPEndPoint(IPAddress.Parse(iptext.Text) ,Convert.ToInt32(porttext.Text));
            sc.Connect(connetpoint);
            sendbuffer = System.Text.Encoding.UTF8.GetBytes(input.Text);
            sc.Send(sendbuffer);
        };

    }

但奇怪的是,*行完美地运行,我得到另外两个编辑文本输入(服务器的IP和端口)。

1 个答案:

答案 0 :(得分:0)

我没有看到您的代码存在问题,也无法重新创建您的问题。以下代码适用于模拟器和设备:

var button = FindViewById<Button>(Resource.Id.MyButton);
var et1 = FindViewById<EditText>(Resource.Id.editText1);
var et2 = FindViewById<EditText>(Resource.Id.editText2);
var et3 = FindViewById<EditText>(Resource.Id.editText3);

button.Click += (s,e) =>
{
    var text1 = et1.Text;
    var text2 = et2.Text;
    var text3 = et3.Text;
    Toast.MakeText(this, string.Format("T1: {0}, T2: {1}, T3: {2}", text1, text2, text3), ToastLength.Short).Show();
};

您如何确认EditText实际上有值?可能是调试器由于某种原因而导致时间不好并且报告它是空的,而实际上并不是空的。在这种情况下,我会将其报告给Xamarin。