在dellay之后,xamarin在循环中更新TextView

时间:2017-02-19 17:42:24

标签: c# android for-loop xamarin textview

我使用Visual Studio。 在按下按钮一段时间后,我尝试在for循环中使用 i.ToString()更新TextView,但它始终显示 i 的最后一个值,我是android的新手,也许我想念一些东西。谁能解释我做错了什么?

namespace MyApp
{
    [Activity(MainLauncher = true, NoHistory = true)]
    public class MyActivity : Activity
    {
        public static TextView text1;
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.MyActivity);
        }

        protected override void OnResume()
        {
            base.OnResume();

            text1 = FindViewById<TextView>(Resource.Id.textView1);
            Button btn = FindViewById<Button>(Resource.Id.button1);

            btn.Click += delegate
            {
                for(int i=0; i<5; i++)
                {
                    text1.Text = i.`ToString`();
                    Task.Delay(1000);
                }
            };
        }
    }
}

按下按钮后,TextView的值为4。

P.S。对不起我的英文

1 个答案:

答案 0 :(得分:0)

您要么让您的委托异步,然后等待Task.Delay调用或使用计时器。使委托异步看起来像这样:

        btn.Click += async delegate
        {
            for(int i=0; i<5; i++)
            {
                text1.Text = i.ToString();
                await Task.Delay(1000);
            }
        };