簡體   English   中英

C# Xamarin Forms 代碼在加載時不執行但在按鈕單擊時執行

[英]C# Xamarin Forms Code not executing when loading but executing on button click

我在打開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());
        });
    }

嘗試使用這樣的東西:

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 方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM