C # Xamarin Forms Code не выполняется при загрузке, но выполняется по нажатию кнопки - PullRequest
0 голосов
/ 25 октября 2019

У меня такой же точный код, работающий при открытии Page и нажатии Button. Это код при загрузке:

[Obsolete]
public LoginPage()
{
    Task.Run(async () =>
    {
        User results = await LoginService.Login(username.Text.Trim(), password.Text.Trim());
        if (results != null)
        {
            GlobalVars.loginProfilJsonObject = results;
            Application.Current.MainPage = new MainPage();
            Console.WriteLine("Not executing");
        }
        else
        {
            await DisplayAlert("Error", "Wrong email address or password", "OK");
        }
    });
}

и это нажатие кнопки:

[Obsolete]
async void OnClicked(object sender, EventArgs e)
{
    User results = await LoginService.Login(username.Text.Trim(), password.Text.Trim());
    if (results != null)
    {
        GlobalVars.loginProfilJsonObject = results;
        Application.Current.MainPage = new MainPage();
    }
    else
    {
        await DisplayAlert("Error", "Wrong email address or password", "OK");
    }        
}

Я попытался try...catch, чтобы попытаться получить какие-либо ошибки, но ничего. Я думаю, это связано с этой строкой, но я не могу понять, что это такое;Application.Current.MainPage = new MainPage();. Ничего не выполняется после этой строки. Это произошло после того, как я обновился до последней Xamarin.Forms версии.

Редактировать: Страница вызывается через MainPage после проверки для входа в систему

    if (GlobalVars.loginProfilJsonObject == null)
    {
        Task.Run(async () =>
        {
            await Navigation.PushAsync(new LoginPage());
        });
    }

1 Ответ

1 голос
/ 26 октября 2019

Попробуйте использовать что-то вроде этого:

protected override async void OnAppearing()
{
    base.OnAppearing();

    User results = await LoginService.Login(username.Text.Trim(), password.Text.Trim());
    if (results != null)
    {
        GlobalVars.loginProfilJsonObject = results;
        Application.Current.MainPage = new MainPage();
        Console.WriteLine("Not executing");
    }
    else
    {
        await DisplayAlert("Error", "Wrong email address or password", "OK");
    }
}

Метод OnAppearing, выполняемый после отображения страницы.

...