我的主页是一个 CarouselPage,它包含三个 ContentPage 类型的页面。
<CarouselPage
...some namespaces...
<CarouselPage.Children>
<pages:HomePageA />
<pages:HomePageB />
<pages:HomePageC />
</CarouselPage.Children>
</CarouselPage>
我正在使用 JamesMontemagno 的 ConnectivityPlugin 来检查设备是否有互联网连接:
public partial class HomePage : CarouselPage
{
public HomePage()
{
InitializeComponent();
if (IsConnectionAvailable())
{
// download content from external db to device (SQLite db)
DisplayAlert("Internet connection found.", "Wait for the application data to update.", "OK");
}
else
{
DisplayAlert("No internet connection found.", "Application data may not be up to date. Connect to a working network.", "OK");
}
}
public bool IsConnectionAvailable()
{
if (!CrossConnectivity.IsSupported)
return false;
bool isConnected = CrossConnectivity.Current.IsConnected;
//return CrossConnectivity.Current.IsConnected;
return isConnected;
}
}
启动画面消失后,消息框不显示。基于在调试时逐步执行代码,我假设它有点显示,然后在初始屏幕消失之前消失。
所以我尝试将ConnectivityPlugin 代码放入HomePageA:ContentPage 中,它是HomePage:CarouselPage 的 child 之一。像这样:
public partial class HomePageA : ContentPage
{
public HomePageA()
{
InitializeComponent();
if (IsConnectionAvailable())
{
// download content from external db to device (SQLite db)
DisplayAlert("Internet connection found.", "Wait for the application data to update.", "OK");
}
else
{
DisplayAlert("No internet connection found.", "Application data may not be up to date. Connect to a working network.", "OK");
}
}
public bool IsConnectionAvailable()
{
if (!CrossConnectivity.IsSupported)
return false;
bool isConnected = CrossConnectivity.Current.IsConnected;
//return CrossConnectivity.Current.IsConnected;
return isConnected;
}
private void RegistrationButton_Clicked(object sender, System.EventArgs e)
{
}
}
现在,当我运行应用程序时,会显示 HomePageA,但没有消息框。只有在我单击 BurgerMenu 并选择 Home(实际上是选择 HomePageA)后,才会弹出消息框。
同样的事情再次发生:
启动画面消失后,消息框不显示。基于在调试时逐步执行代码,我假设它有点显示,然后在启动屏幕消失之前消失。
有人可以向我解释这种行为吗?
如何在启动画面消失后显示消息框?
谢谢大家。
===================== U P D A T E =====================
Pavan 没有按照我希望的方式解释问题。对于你们所有的好人,我发现了几个类似的问题和答案,并给出了足够的解释。
可以找到一个不错的解释here和 here是另一个。
但是,我会接受 Pavan 的回答,因为它有效,并且当时没有提供更好的答案。
Best Answer-推荐答案 strong>
DisplayAlert 用于在 UI 线程上执行某些操作。它是从后台线程调用的,用于操作 UI,这只能在 UI 线程上完成。
试试下面的代码来显示警告信息,
Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
{
App.Current.MainPage.DisplayAlert("Internet connection found.", "Wait for the application data to update.", "OK");
});
它会帮助你
关于android - Xamarin.Forms 如何显示互联网连接状态?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/45939918/
|