我对导航有问题。当我单击设备的主屏幕按钮并返回到应用程序时,我得到的是应用程序主屏幕而不是固定页面。理想情况下,应使用设备的后退按钮显示图钉页及其工作正常。OnStart()方法具有navigationasync,但与OnResume()方法不兼容。我是否必须转到每个Platform项目cs文件并在其中添加导航(例如Android OnRestart()/ OnResume()方法)?如果有人知道解决方案,请告诉我
protected override void OnInitialized()
{
NavigationService.NavigateAsync("SomePage");
}
每次调用应用程序的ctor时都会调用一次。这是一个重要的考虑因素,因为这意味着每当本机平台在后台对应用程序进行逻辑删除或通过在MainActivity中调用OnCreate或AppDelegate中的FinishedLaunching刷新应用程序时,就会调用OnInitialized来将应用程序的导航堆栈重置为SomePage
。
但是,您可以在PrismApplication中重写OnStart / OnResume,并使用所需的任何业务逻辑来确定在何处导航以及如何还原应用程序。
public override void OnStart() { NavigationService.NavigateAsync("MainPage"); } public override void OnResume() { if(someCondition) { NavigationService.NavigateAsync("SomePage"); } else { NavigationService.NavigateAsync("AnotherPage"); } }
protected override void OnResume()
{
MessagingCenter.Send<object>(this, "Hi");
}
并且在您的ViewModel中,订阅消息:
public class ViewModel {
public ViewModel() {
MessagingCenter.Subscribe<object>(this, "Hi", (sender) =>
{
// Do something whenever the "Hi" message is received
});
}
}
发送消息之前,请确保您的ViewModel已订阅消息。