我写了一个简单的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和端口)。
答案 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。