Как сохранять знак загрузки активным до завершения загрузки страницы. Страница появляется позже, когда знак загрузки ProgressDialog останавливается на xamarin native android - PullRequest
0 голосов
/ 08 января 2020

Загрузка моей страницы позже, после того как знак загрузки ProgressDialog останавливается. Внутри моей страницы просмотр списка изображений загружаются через GetImageBitmapFromUrl. Можете ли вы предложить, как я могу продолжать загружать знак, пока моя страница не загружается должным образом ...

 public override async void OnActivityCreated(Bundle savedInstanceState)
    {
        base.OnActivityCreated(savedInstanceState);

        var mDialog = new ProgressDialog(this.Context);
        mDialog.SetMessage("Please wait...");
        mDialog.SetCancelable(false);
        mDialog.Show();


        _data = (await ServiceContext.Current.Duas.GetAll()).ToList();
        DuasAdapter adapter = new DuasAdapter(this.Context, _data);
        _lstDuas.Adapter = adapter;

        _lstDuas.ItemClick += LstDuas_ItemClick;

        mDialog.Cancel();
    }

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Привет, я решил, изменив мой код ниже ...

   public override async void OnActivityCreated(Bundle savedInstanceState)
    {
        base.OnActivityCreated(savedInstanceState);

        var mDialog = new ProgressDialog(this.Context);
        mDialog.SetMessage("Please wait...");
        mDialog.SetCancelable(false);
        mDialog.Show();


        _vdos = (await ServiceContext.Current.IslamicVdo.GetAll()).ToList();
        VdoAdapter adapter = new VdoAdapter(this.Context, _vdos);
        _lstVdo.Adapter = adapter;


        fragsIDActivity.RunOnUiThread(() => mDialog.Hide());
    }
0 голосов
/ 09 января 2020

Из общего кода причиной, по которой не стоит ждать загрузки данных, может быть следующая строка:

_data = (await ServiceContext.Current.Duas.GetAll()).ToList();

Вам нужно проверить, что ServiceContext.Current.Duas.GetAll() также содержит метод await. Если нет, не будет ждать вызова следующей строки кода.

Я покажу пример кода здесь, TaskMethod может выглядеть как LoadDataMethod.

, если код следующий:

private async void Button_Clicked(object sender, EventArgs e)
{
    Console.WriteLine("Start code");
    int codeResult = await TaskMethod();
    Console.WriteLine("End code :" + codeResult);
}

private async Task<int> TaskMethod()
{
    Task.Delay(3000);
    return 1;
}

Когда я нажал кнопку, вы увидите результат:

01-10 14:14:48.474 I/mono-stdout( 5920): Start code
01-10 14:14:48.510 I/mono-stdout( 5920): End code :1

Вы не увидите ожидания, затем код завершения. Задание не завершено.

Если код, как следует, вы увидите, как ожидалось.

private async void Button_Clicked(object sender, EventArgs e)
{
    Console.WriteLine("Start code");
    int codeResult = await TaskMethod();
    Console.WriteLine("End code :" + codeResult);
}

private async Task<int> TaskMethod()
{
    await Task.Delay(3000);
    return 1;
}

Результат:

01-10 14:19:59.396 I/mono-stdout( 6040): Start code
01-10 14:20:02.455 I/mono-stdout( 6040): End code :1

Теперь конец кода пока задание не выполнено.

...