触摸另一个帖子

时间:2015-05-27 08:36:23

标签: android multithreading view scroll xamarin

多次触发

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

1 个答案:

答案 0 :(得分:1)

不要让ScrollHelper保持静止。它不是必须的。然后,您可以在UsefulScrollView中对其进行引用,ScrollHelper将能够访问其封闭类中的字段,例如linearLayout,并且可以编辑TextView。您是否正确尝试使用MainActivity.RunOnUiThread,但您可能不必看到,因为所有这些都将来自主线程(通过OnScrollChanged方法)