我想在主页加载时显示提醒。所以我在构造函数中声明了显示警报。但我没有得到任何回应。
我附上了我的示例代码。
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();
}
}
答案 0 :(得分:9)
constructor
旨在保留Initialization
代码。在即将显示OnAppearing()
时调用Page
方法。displayAlert()
将在此方法中成功。这是示例代码。
protected override void OnAppearing()
{
Application.Current.MainPage.DisplayAlert("Success", "Saved", "OK");
base.OnAppearing();
}
按照其他答案中的建议,在constructor
或new Task(Init).Start();
中保留初始化代码。将if
else
的状态保存在bool
类型的字段中。根据字段更改OnAppearing()
方法中的消息。
答案 1 :(得分:1)
你不能在课程的.ctor中直接await
Task
(搜索SO,这里有很多Q& A)。
在你的.ctor中,在InitializeComponent
开始一个无效任务(火灾和遗忘风格)之后:
new Task(Init).Start();
虚拟任务Init
将如下所示:
async void Init()
{
if (!(Plugin.Connectivity.CrossConnectivity.Current.IsConnected))
{
~~~
}
else
{
GetDetails();
}
}
答案 2 :(得分:0)
InitializeComponent()
中使用
await DisplayAlert("Success", "Saved", "OK");
而不是像Application.Current.MainPage.DisplayAlert("Success", "Saved", "OK");
这样使用
那就可以了。