簡體   English   中英

Xamarin表單內部構造函數顯示警告未顯示?

[英]Xamarin forms inside Constructor display alert not showing?

我想在主頁加載時顯示警報。 所以我在構造函數中聲明了顯示警報。 但我沒有得到任何回應。

我附上了我的示例代碼。

public Home()
{
    InitializeComponent();
    if (!(Plugin.Connectivity.CrossConnectivity.Current.IsConnected))
    {

        if (System.IO.File.Exists(path + "App" + "/Data.txt"))
        {
            Device.BeginInvokeOnMainThread(async () =>
            {
                await DisplayAlert("Success", "Saved", "OK");
            });

        }
        else
        {
            Device.BeginInvokeOnMainThread(async () =>
            {
                await DisplayAlert("Oops", "Login Required", "OK");
            });

        }

    }
    else
    {
        GetDetails();
    }

}

constructor用於保留Initialization代碼。 OnAppearing()時,該方法被調用Page即將被displayed.The displayAlert()將這個方法里面取得成功。 這是示例代碼。

protected override void OnAppearing()
    {

        Application.Current.MainPage.DisplayAlert("Success", "Saved", "OK");

        base.OnAppearing();

}

保持constructor函數中的初始化代碼或new Task(Init).Start(); 正如其他答案所示。 else if的狀態保存在bool類型的字段中。 根據字段更改OnAppearing()方法中的消息。

你不能直接await類的.ctor中的Task (搜索SO有很多問答)。

在你的.ctor中,在InitializeComponent啟動一個void Task(fire和forget樣式):

new Task(Init).Start();

void任務Init看起來像:

async void Init()
{
    if (!(Plugin.Connectivity.CrossConnectivity.Current.IsConnected))
    {
        ~~~
    }
    else
    {
        GetDetails();
    }
}

暫無
暫無

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

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