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

在mono android(C#)的编辑文本控件中获取用户输入,c#,android,xamarin.android,C#,Android,Xamarin.android,我已经编写了一个简单的android应用程序来测试c#中的mono android。 我的程序是有一个编辑文本控件(或纯文本,它是我在main.axml文件中创建UI时控件的名称)和一个按钮。用户在编辑文本中键入一些内容并按下按钮,我只想获得用户输入。但我无法通过Text属性访问它 旁注:我的主程序是通过套接字将文本发送到服务器,但当我想要获取字符串并将其放入缓冲区时,它总是不返回任何内容。 这是我的测试程序: protected override void OnCreate(Bund

我已经编写了一个简单的android应用程序来测试c#中的mono android。 我的程序是有一个编辑文本控件(或纯文本,它是我在main.axml文件中创建UI时控件的名称)和一个按钮。用户在编辑文本中键入一些内容并按下按钮,我只想获得用户输入。但我无法通过Text属性访问它

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

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

    }
protectedoverride void OnCreate(捆绑包){
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
EditText输入=FindViewById(Resource.Id.editText1);
按钮发送=FindViewById(Resource.Id.button1);
发送。单击+=(发件人,e)=>{
string str=input.Text;
};
}
这是我的实际套接字程序:

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

    }
protectedoverride void OnCreate(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
EditText iptext=findviewbyd(Resource.Id.editText1);
EditText-porttext=FindViewById(Resource.Id.editText2);
EditText输入=FindViewById(Resource.Id.editText3);
按钮发送=FindViewById(Resource.Id.button1);
发送。单击+=(发件人,e)=>{
*connetpoint=new-IPEndPoint(IPAddress.Parse(iptext.Text)、Convert.ToInt32(porttext.Text));
sc.Connect(连接点);
sendbuffer=System.Text.Encoding.UTF8.GetBytes(input.Text);
sc.Send(sendbuffer);
};
}

但奇怪的是,*行工作得很好,我得到了另外两个编辑文本输入(服务器的ip和端口)。

我看不出您的代码有问题,无法重新创建您的问题。以下代码适用于Emulator和设备:

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();
};
var-button=findviewbyd(Resource.Id.MyButton);
var et1=findviewbyd(Resource.Id.editText1);
var et2=FindViewById(Resource.Id.editText2);
var et3=FindViewById(Resource.Id.editText3);
按钮。单击+=(s,e)=>
{
var text1=et1.Text;
var text2=et2.Text;
var text3=et3.Text;
Show();
};

您如何验证
EditText
中是否确实包含值?它可能是调试器由于某种原因处于不好的状态,并报告它为空,而实际上它不是空的。在这种情况下,我会将它报告给Xamarin。

谢谢。我的问题是通过使用var类型获取文本来解决的