Chr*_*ris 17 android xamarin xamarin.forms
我想通过按下android上的xamarin表单中的硬件后退按钮来阻止关闭应用程序.
我想,你可以使用应用程序中的硬件后退按钮(工作正常)进行导航,但是当达到导航堆栈中的第一页时,不想退出.
我尝试在xamarin表单中使用OnSleep事件,但在这里我无法取消退出.
我也尝试在android中捕获后退按钮:
public override void OnBackPressed()
{
//base.OnBackPressed();
}
Run Code Online (Sandbox Code Playgroud)
但是当使用xamarin表单时,我不知道当前显示的是哪个页面.所以我不知道是否允许导航
Chr*_*ris 18
它适用于评估NavigationStack(当您使用NavigationPage时).
在我的Activity中,我重写了OnBackPressed
public override void OnBackPressed()
{
if(App.Instance.DoBack)
{
base.OnBackPressed();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的xamarin表单应用程序(App.Instance(它是一个单例))中,我将像这样评估当前页面的NavigationStack.
public bool DoBack
{
get
{
NavigationPage mainPage = MainPage as NavigationPage;
if (mainPage != null)
{
return mainPage.Navigation.NavigationStack.Count > 1;
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
当NavigationStack中只剩下一页时,我不会调用base.OnBackPressed,这样我就不会关闭App了.
![测试]
Iai*_*KER 11
这就是Xamarin Forms MasterDetail页面场景代码的样子......
public bool DoBack
{
get
{
MasterDetailPage mainPage = App.Current.MainPage as MasterDetailPage;
if (mainPage != null)
{
bool canDoBack = mainPage.Detail.Navigation.NavigationStack.Count > 1 || mainPage.IsPresented;
// we are on a top level page and the Master menu is NOT showing
if (!canDoBack)
{
// don't exit the app just show the Master menu page
mainPage.IsPresented = true;
return false;
}
else
{
return true;
}
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
只需在页面中给你一个空白的电话,你想要阻止,比如
protected override bool OnBackButtonPressed()
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
这将阻止XF-Droid中的后退按钮.
| 归档时间: |
|
| 查看次数: |
19436 次 |
| 最近记录: |