[英]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.