【发布时间】:2019-07-23 15:53:08
【问题描述】:
我在 android 上遇到了一个问题,当我们导航 OnPause() 时,我们的 TimePicker 和 DatePicker 保持可见。我们需要在用户后台应用程序时将用户重定向回登录屏幕,但如果 TimePicker 或 DatePicker 在他们执行此操作时处于活动状态,它会停留在屏幕上。它出现在登录屏幕上方,按取消或确定会使应用程序崩溃。
我们正在挂钩本机 android 生命周期事件(不仅仅是使用内置挂钩的 Xamarins),并且我们重定向 OnResume()。我已经在准系统应用程序中对此进行了测试,但它仍然会发生 OnPause()。
这是导致我们出现问题的 TimePicker:
<TimePicker x:Name="VitalTimePicker" HorizontalOptions="Fill" VerticalOptions="Fill" IsVisible="false" PropertyChanged="OnTimePickerPropertyChanged"/>
这是一个在生命周期事件中更改屏幕的示例:
protected override void OnSleep()
{
App.Current.MainPage = new NavigationPage(new NotesPage());
}
有什么想法吗?我正在考虑清除拾取器,但我似乎找不到如何做到这一点
编辑
只是为了添加更多上下文
Application 类 (app.xaml.cs) 具有 lifecycle hooks,当我们的用户后台应用程序时,我们使用它来捕获。在这里,我们调用 MainPage = new NavigationPage(new LoginPage()); 将应用程序带回登录页面。
我已经添加了
protected override void OnDisappearing()
{
VitalTimePicker.Unfocus();
VitalDatePicker.Unfocus();
}
到我正在工作的视图,它似乎在我们后台应用程序时被调用,但由于某种原因,当我们的登录页面再次弹出时,TimePicker 停留在屏幕上。
【问题讨论】:
-
能否分享一个基本的演示,以便我们进行测试?
标签: xamarin xamarin.forms xamarin.android