Android 如果我在菜单/按钮上单击两次,ProgressDialog不会停止

Android 如果我在菜单/按钮上单击两次,ProgressDialog不会停止,android,xamarin,xamarin.android,android-progressbar,Android,Xamarin,Xamarin.android,Android Progressbar,我使用ProgressDialog在用户单击任何菜单时显示加载,它工作正常。但是,当用户在菜单上单击两次时,ProgressDialog没有停止,它会无休止地运行 我如何解决这个问题 这是我的代码结构: async void Grid_ItemClick(object sender, AdapterView.ItemClickEventArgs e) { _pbr = Utilities.ProgressBar(this, "b").Show(); switch (e.Positi

我使用
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:
  }
}
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;
}
实用程序。ProgressBar
方法:

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:
  }
}
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不会停止

当用户在菜单上单击两次时,避免为您的
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;
    }
}

太棒了。