【发布时间】:2019-06-04 09:22:37
【问题描述】:
在我的 Xamarin.Android-App 中,当打开一个特殊页面(活动)时,创建时会显示一个表格。 ListAdapter 定义该表中的某些字段。我有一个函数可以让我获得一个外部 int。 int 是该表中显示的其他数据之一。但是这个函数只被调用一次(在创建时)。我想在运行时动态检测接收到的 int 是否发生了变化,如果发生了变化,还要更改表中 int 的显示。
请看我下面的代码:
ListAdapter.cs:
var thread = new Thread(() => MethodToRun());
thread.Start();
[...]
void MethodToRun()
{
while (true)
{
Thread.Sleep(1000);
var a = new Activity();
a.RunOnUiThread(() => {
int number = Get_Number();
if (number == 1)
{
v.FindViewById<TextView>(Resource.Id.textView).Text = "1";
}
if (number != 1)
{
v.FindViewById<TextView>(Resource.Id.textView).Text = "Not 1 anymore";
}
});
}
}
不幸的是,我在var a = new Activity(); 行中遇到运行时错误,说
Java.Lang.RuntimeException:无法在线程内创建处理程序 没有调用 Looper.prepare()
谁能告诉我问题出在哪里/如何解决?
最好的问候
编辑:Get_Number() 方法如下所示:
private int Get_Number(Geraet geraet)
{
var request = HttpWebRequest.Create(string.Format(Constants.WebservicePath, Serverip, Constants.WebservicePort, geraet.Ip));
request.ContentType = "application/json";
request.Method = "GET";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
var content = reader.ReadToEnd();
var result = System.Text.RegularExpressions.Regex.Replace(content, @"[^0-9]", "");
if (result == string.Empty)
{
return -2;
}
else
{
return Int32.Parse(result);
}
}
}
}
【问题讨论】:
标签: c# android xamarin.android refresh android-runonuithread