我面临一个问题,以防止在Xamarin.Forms Android上的PCL项目快速多重控制点击。基本上我需要解决这些四种情况:如何防止快速点击多个控件?
- 点击在导航栏
- 按钮和后退按钮点击按钮和硬件后退按钮
- 点击两个或更多按钮在相同的时间
- 点击相同的按钮的多个次
我使用NavigationPage 3页 - MainPage,SecondPage和ThirdPage。在每一页上都有处理导航的按钮。
MainPage.xaml.cs中
public async void NavigateToSecondPage(object s, EventArgs e)
{
await Navigation.PushAsync(new SecondPage());
}
SecondPage.xaml.cs
public async void NavigateToMainPage(object s, EventArgs e)
{
if(await DisplayAlert("Alert", "Are you really sure you want to navigate back?", "yes", "no"))
await Navigation.PopAsync();
}
public async void NavigateToThirdPage(object s, EventArgs e)
{
await Navigation.PushAsync(new ThirdPage());
}
ThirdPage.xaml.cs
public async void NavigateToSecondPage(object s, EventArgs e)
{
await Navigation.PopAsync();
}
第一和第二种情况引起的问题,即消息框来自SecondPage的“NavigateToMainPage”事件处理程序位于MainPage上。第三种情况类似,但SecondPage中的MessageBox位于第三页上。最后一种情况会导致在NavigationStack上多次堆叠相同的页面。
是否有解决方案,涵盖所有这些情况?这个问题也适用于本机Android开发者。
Gif representing scenario 1 & 2
你可以更具体,并提供给我的代码你将如何解决所有情况? –
这就是我一直这样做,是的它的作品:) –
@Jan看答案编辑。我不能更精确,因为我不知道Xamarin表单,既不是程序生命周期。所以我做了它,如果它只是在Android上,并没有涉及片段。如果涉及到碎片(或等价物),或者每个页面都是一个活动(或等同物),则会更复杂。但是,我几乎可以肯定,如果你使用不同的活动,页面问题不会发生。 – Feuby