每当用户单击任何菜单时,我都使用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;
}


载入中...

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

最佳答案

如果我在菜单/按钮上单击两次,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;
    }
}

07-24 09:48
查看更多