ProgressDialog не останавливается, если я дважды нажму на кнопку меню / - PullRequest
0 голосов
/ 12 ноября 2018

Я использую 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;
}

Загрузка ...

enter image description here

1 Ответ

0 голосов
/ 13 ноября 2018

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;
    }
}
...