Xamarin更改按钮文本失败

时间:2019-07-14 16:38:06

标签: android xamarin button

我的Xamarin应用程序有两个按钮。按钮A和按钮B。两者都可以启动长时间运行的任务。我想通过将按钮文本更改为“正在工作”,并在任务结束后将其更改回给用户,以表明该任务正在运行。

当我单击按钮A时,我得到了代码:

btnA.Text="Working";

但这不会导致btnA文本显示“正在工作”。

如果我在统计“按钮A”任务的过程中包括以下内容:

btnB.Text="Working";

那行得通。当我做相反的操作时,即,使用Working更新btnB,同时按下Button B时将btnA更新为Working,相反的情况是Button B的文本保持不变,Button A的文本更改为Working。

我尝试过直接设置按钮文字或使用

RunOnUiThread(() => btnA.Text = "Working");

未按下任何按钮时,我可以更新其文本,但不能更新所按下按钮的文本。

1 个答案:

答案 0 :(得分:0)

根据您的描述,您想在单击和任务完成时更改按钮文本,但是我不知道您在哪里修改按钮文本,我做了一个关于运行长任务并在此处更改按钮文本的示例。您可以查看是否需要您的需求。

 private void Button_Clicked(object sender, EventArgs e)
    {
        btna.Text = "Wait";
        Task.Run(() => method1());

        Console.WriteLine("UI thread is not block");      

    }

    private async  void method1()
    {
        await Task.Run(async () =>
         {
             for (int i = 1; i <= 10; i++)
             {

                 Console.WriteLine("the data is {0}", i);

                 await Task.Delay(1000);

             }

         });
        Console.WriteLine("the task is done!");

        Device.BeginInvokeOnMainThread(() =>
        {
            btna.Text = "Done";

        });

    }

您可以看到单击时可以更改Button的文本,也可以使用 Device.BeginInvokeOnMainThread()

完成长时间的任务后更改Button的文本。