OnScrollChanged
方法。
我已经使用Timer
来检测最后一次滚动。
如何从另一个TextView
更改我的Thread
?
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
...
}
public class UsefulScrollView : HorizontalScrollView
{
...
private static System.Threading.Timer timer;
protected override void OnScrollChanged(int l, int t, int oldl, int oldt)
{
if (timer == null)
{
TimerCallback tcb = CheckStatus;
timer = new Timer(tcb, null, 500, Timeout.Infinite);
}
else
{
timer.Change(Timeout.Infinite, Timeout.Infinite);
timer.Change(500, Timeout.Infinite);
}
}
protected void CheckStatus(Object stateInfo)
{
TextView tv = linearLayout.FindViewById<TextView>(101);
tv.Text = "abc" // error
}
}
}
ERROR: Only the original thread that created a view hierarchy can touch its views
答案 0 :(得分:1)
不要让ScrollHelper
保持静止。它不是必须的。然后,您可以在UsefulScrollView
中对其进行引用,ScrollHelper
将能够访问其封闭类中的字段,例如linearLayout
,并且可以编辑TextView
。您是否正确尝试使用MainActivity.RunOnUiThread
,但您可能不必看到,因为所有这些都将来自主线程(通过OnScrollChanged
方法)