我正在编写一个有几个页面的应用程序。当用户处于"添加页面"时,相应的按钮提供了离开页面的机会。但是,如果用户按下设备上的返回键,应用程序将完全崩溃。
<?xml version="1.0" encoding="UTF-8" ?>
<Shell
x:Class="BucketList.AppShell"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:BucketList"
xmlns:views="clr-namespace:BucketList.Views"
Shell.FlyoutBehavior="Disabled">
<ShellContent
Title="BucketList (MVP): v. 0.1"
ContentTemplate="{DataTemplate local:MainPage}"
Route="MainPage" />
<ShellContent
Title="Task creation"
ContentTemplate="{DataTemplate local:TaskAddingPage}"
Route="TaskAddingPage" />
<ShellContent
Title="Task information"
ContentTemplate="{DataTemplate views:ShowTaskPage}"
Route="ShowTaskPage" />
</Shell>
在这种情况下如何防止应用程序关闭?例如,当您单击后退按钮时,添加页面只是关闭,主页面打开(不关闭整个应用程序)。
Android返回键的默认行为是隐藏当前应用程序并返回Maui的主屏幕。因为在原生android中,它会回到之前的活动,但是在Maui项目中只有一个MainActivity。
所以您可以覆盖页面中的OnBackButtonPressed()
。例如在添加页面中:
protected override bool OnBackButtonPressed()
{
Shell.Current.Navigation.PopAsync();// get back to the previous page
return true; // this will cancel the default behavior
}