如果我在 menu/button 上单击两次,ProgressDialog 不会停止

ProgressDialog not stopping if I click twice on menu/button

我正在使用 ProgressDialog 来在用户单击任何菜单时显示加载,并且工作正常。但是当用户在菜单上点击两次时,ProgressDialog 并没有停止,而是运行 没完没了。

我该如何解决这个问题?

这是我的代码结构:

async void Grid_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
    _pbr = Utilities.ProgressBar(this, "b").Show();
   switch (e.Position)
   {
    case 0:
        var result = await objHw.GetHomework(userid,log.LogInOrganizationID);
        if (resultA.Any())
        {
            //code
        }
        else
        {
            _pbr.Hide();
            Toast.MakeText(this, "Homework not available.", ToastLength.Short).Show();
        }
        _pbr.Hide();
        break;
    case 1: 
    case 2:
  }
}

Utilities.ProgressBar方法:

public static ProgressDialog ProgressBar(Context context, string position)
{
    var pbr = new ProgressDialog(context);
    pbr.SetCancelable(false);
    pbr.Indeterminate = true;
    pbr.SetProgressStyle(ProgressDialogStyle.Spinner);
    switch (position.ToLower())
    {
        case "c":
            pbr.Window.SetGravity(GravityFlags.Center);
            break;
        case "b":
            pbr.Window.SetGravity(GravityFlags.Bottom);
            break;
    }
    pbr.SetMessage("please wait..");
    return pbr;
}

正在加载...

ProgressDialog not stopping if I click twice on menu/button

当用户在菜单上单击两次时,避免为您的 ProgressDialog 创建多个实例应该可以解决此问题:

public class Utilities
{
    public static ProgressDialog pbr;
    public static ProgressDialog ProgressBar(Context context, string position)
    {
        if(pbr == null)
        {
            pbr = new ProgressDialog(context);
        }

        pbr.SetCancelable(false);
        ...
        pbr.SetMessage("please wait..");
        return pbr;
    }
}