一个临时的解决方法,如果进行覆盖,没有动画就不会闪烁!
protected override bool OnBackButtonPressed()
{Current.Navigation.PopAsync(false); return true;}
嘿@ z07713! 感谢您的举报,并添加了视频以及解决方法! 干得好😄
您是否有机会将一个小型的复制项目放在一起,以排除这是由其他任何代码引起的,而不仅仅是导航吗?
另外,您是否在iOS上尝试过此操作并看到了相同的东西? 还是没有在iOS上尝试过?
谢谢!
嘿@ z07713! 感谢您的举报,并添加了视频以及解决方法! 干得好😄
您是否有机会将一个小型的复制项目放在一起,以排除这是由其他任何代码引起的,而不仅仅是导航吗?
另外,您是否在iOS上尝试过此操作并看到了相同的东西? 还是没有在iOS上尝试过?
谢谢!
嘿@jfversluis ,谢谢您的答复,这是您要求的代表: https : //drive.google.com/open?id=1WkGh6QwTOP380gX4RrRsksSGBoJNWeuc
另外,我还没有在IOS上尝试过,也没有能力这样做,因为我没有Mac。
太好了,谢谢@ z07713 !
肯定会看到这种情况,谢谢。
可能值得注意的是,解决方法protected override bool OnBackButtonPressed() {Current.Navigation.PopAsync(false); return true;}
仅当应用于AppShell.xaml背后的代码中时才起作用,而放在单独的页面上时则不起作用。 我认为这与7072有关
作为工作场所,覆盖ShellSection
的OnPopAsync
ShellSection
以禁用动画可能会更有针对性。
public class CustomShellSection : ShellSection
{
protected override Task<Page> OnPopAsync(bool animated)
{
return base.OnPopAsync(false); // ignore the parameter
}
}
@jfversluis对我来说,这似乎在iOS(13.3)上正常工作。
禁用动画不是我们的选择,我们只是在完成发布。 我们将不得不回滚到4.3,这很糟糕,因为它将重新打开一些主要在shell和轮播中的错误。
我们可能不得不禁用某些功能,然后在没有这些功能的情况下发布它们,鉴于我们使用它们多久了,这令人遗憾。
除了禁用动画之外,还有其他解决方法吗?
有机会在1月16日之前解决吗? 太棒了。 谢谢。
请注意,PopModal动画没有问题。
很抱歉听到@jonx。 即使我们要在1月16日之前修复它,也不太可能成为我们在此之前发布的NuGet的一部分。 如果这阻碍了您的发行,那么我不会押注该选项。 对于那个很抱歉。
@jfversluis可以,我知道,谢谢您的评论。 我们只需要延迟发布。
@ z07713有一种方法可以让您再次共享您的样本,我无法再访问您的链接。 我想看看这是否真的是同样的问题,因为对我来说,我可以短暂地看到应用程序的另一个屏幕而不是黑屏(这是在向导的上下文中;当我弹出当前页面时,我会短暂看到向导的第一页)。 谢谢。
@jfversluis您对4.4中的哪些更改引入此问题有一个想法吗? 我想看看是否有一种临时解决此问题的方法。 谢谢。
我降级到4.3.991250,实际上我仍然有问题,只是不那么明显(因为它更快-我想是更快)。 如果@ z07713可以分享他的示例,我将做更多测试...
我也有这个问题。 我试过把线:
受保护的覆盖布尔OnBackButtonPressed(){Current.Navigation.PopAsync(false); 返回true; }
在我的appShell.xaml.cs中,并且闪烁仍然存在。 如果有人可以帮助我了解解决方法,那将非常棒!
如果您想在动画中使用shell,我们也会遇到同样的问题,这很烦人。 :|
我也遇到了同样的问题,而且解决方法对我不起作用。 我收到了用户的反馈,这看起来很讨厌,因此我们必须推迟应用的发布,直到此问题解决为止。
什么时候可以修复错误?
使用Navigation.PushAsyc(<Page Object>,false)
导航到内容页面时,我在Windows UWP中遇到相同的问题
任何解决方法?
@jfverslus对此有任何更新吗?
@ z07713恐怕还没有,抱歉! 您有没有发现任何可能对我们有帮助的新发现?
因此,Xamarin团队在仓库中发布了一个闪烁的问题,该问题彻底破坏了UX。 这对我来说太疯狂了。 目前正面临这个问题,我后悔没有本地化,因为我在浏览自己的应用程序时感到头疼。
@jfversluis我做了一些测试,希望这对发现错误的人有所帮助:
为了进行复制,我使用了标准的Visual Studio模板,该模板使用Xamarin Forms 4.3.0.908675
我没有更改代码。 标准模板应用程序中没有闪烁。
之后,我将Xamarin Forms包升级到4.3.0.947036
无需更改代码。 闪烁不会出现在模拟器中,而只会出现在真实的Android设备(在我的情况下为Samsung Galaxy A40)上,也不会出现在iOS Simulator或iPhone 8上。
因此,在这两个版本之间必须进行更改以导致闪烁。
太棒了! @AndreasLichtsinn
@jfversluis唯一值得一提的是,由于这个原因,我们完全停止使用shell:/
感谢您对此@AndreasLichtsinn的调查! 非常有价值的信息:)
我发现了眨眼问题的另一件事。
当我使用模板创建Shell应用程序时,如果将导航(在ItemsPage后面的代码中)从“ Navigation.PushAsync(new ItemDetailPage())”更改为“ Shell.Current.GoToAsync(” itemDetailPage“,false) ”,那么我将在Android设备上看到该指示灯闪烁。 我已经在Xamarin.Forms的原始4.3.xxx和最新的4.5.xxx版本中进行了检查。
老实说,尽管Shell导航存在一些导航问题(例如唯一的Page to Page导航,Parameter pass等),但此错误实际上阻止了我的发布,这将使Shell完全无法使用。 因此,请尽快修复该错误!!!
早上好,我也遇到上述相同的问题。 我想知道是否有解决方案?
同样的问题在这里。 禁用动画我并没有真正解决,特别是因为使用Back Button Pop并没有简便的方法。
希望这个问题能尽快解决!
我可以确认版本4.3.0.90867中没有闪烁。
未测试上述版本,但是此问题在4.5.0.356版本中仍然存在
在上一个稳定版本中,该问题仍然存在。
同样的问题在这里。 禁用动画我并没有真正解决,特别是因为使用Back Button Pop并没有简便的方法。
希望这个问题能尽快解决!
@kevinjpetersen仅当您能够尽快修复它时,才会发生这种情况。 它自去年11月中旬开始开放。
你最好的快! 解决的方法是使用4.3.0.90867 v版试用@tdamir发现。
更多信息:此提交中引入了该错误: https :
好像我将这一行注释掉了:
https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L499
那么就没有眨眼了。
有人可以调查这个比我有更多经验的人。
我对此进行了调试,如果我先删除页面,然后调用导航,那么就可以了-不闪烁。
所以在这里: https :
更改此:
_navigationRequested?.Invoke(this, args);
if (args.Task != null)
await args.Task;
RemovePage(page);
对此:
RemovePage(page);
_navigationRequested?.Invoke(this, args);
if (args.Task != null)
await args.Task;
@tdamir很好找到!
提供的结果是正确的@tdamir ,问题在于等待args.Task
可能是由于从UI-Thread-UI进行上下文切换引起的。
任务总是在等待
即使在android上,此方法中的args.Task
始终是Task.FromResult(...)
https://github.com/xamarin/Xamarin.Forms/blob/7a52542d50797ccc69ae1d8dd84259190d96bdb4/Xamarin.Forms.Platform.Android/Renderers/ShellItemRendererBase.cs#L134
但认为一个发现更可能的罪魁祸首
https://github.com/xamarin/Xamarin.Forms/blob/7a52542d50797ccc69ae1d8dd84259190d96bdb4/Xamarin.Forms.Platform.Android/Renderers/ShellItemRendererBase.cs#L252 -L259
它会在导航时更改背景颜色(不确定是否总是如此)! 为什么?
似乎仅在选项卡中时才发生闪烁。
很多测试要做。
伟大的工作@tdamir和@ahmedalejo! :)
@ahmedalejo很高兴! 只是想把它放在那里,我不认为这只是标签。 我有同样的闪烁,而我所拥有的只是我的AppShell中(也就是没有TabBar):
<?xml version="1.0" encoding="UTF-8"?>
<Shell xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:views="clr-namespace:MyApp.Views"
mc:Ignorable="d"
Title="MyApp"
Visual="Material"
Shell.BackgroundColor="{StaticResource JFBlack}"
Shell.TitleColor="{StaticResource JFWhite}"
Shell.ForegroundColor="{StaticResource JFWhite}"
FlyoutBehavior="Disabled"
Shell.TabBarIsVisible="False"
x:Class="MyApp.AppShell">
<ShellContent Route="login">
<views:LoginPage />
</ShellContent>
<ShellContent Route="overview">
<views:OverviewPage />
</ShellContent>
</Shell>
@ahmedalejo是的,颜色变化部分很奇怪,但是如果我将其移除,它仍然会闪烁。
看起来像https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L499必须在导航之前被调用。
嗨@PureWeen和@rmarinho
您知道为什么要在下面拨打SendAppearanceChange()
https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L499
导致弹出闪烁?
有人可以提供解决方法的建议吗?
解决方案
protected override bool OnBackButtonPressed()
{
Current.Navigation.PopAsync(false); return true;
}
不管用。
我已经找到了解决方法(由于https://github.com/xamarin/Xamarin.Forms/issues/8581#issuecomment-569583965)
public class CustomTab : Tab
{
protected override Task<Page> OnPopAsync(bool animated)
{
// temporary workaround while https://github.com/xamarin/Xamarin.Forms/issues/8581 not fixed
return base.OnPopAsync(animated: false);
}
}
然后在XAML中使用CustomTab。
以下修复程序仅适用于硬件后退按钮导航(不适用于其他后退导航情况):
protected override bool OnBackButtonPressed()
{
Current.Navigation.PopAsync(false); return true;
}
谢谢@pfedotovsky,我有一种预感,它也可能与标签导航有关。
同样发生在我们身上的是,从4.3开始,闪烁就出现在Android上。
刚发现此bug成立一周年了[Shell]导航-闪烁#5755
当goback出现此问题时,屏幕闪烁。
感谢您对@ahmedalejo的探索,它使此超级容易
构建完成后,如果有人要测试nuget,并告诉我问题是否已解决,那将是有帮助的
https://dev.azure.com/xamarin/public/_build/results?buildId=16155&view=results
@PureWeen好,所以我做了一个测试:
我使用Xamarin Forms 4.3.0.908675创建了一个新的Shell Sample App->无闪烁
然后我更新到最新的稳定版4.5.0.495->闪烁
然后我更新到您的最新版本4.6.0.1693->不闪烁
做得好! 希望其他人能够确认这一点。
@PureWeen好,所以我做了一个测试:
我使用Xamarin Forms 4.3.0.908675创建了一个新的Shell Sample App->无闪烁
然后我更新到最新的稳定版4.5.0.495->闪烁
然后我更新到您的最新版本4.6.0.1693->不闪烁做得好! 希望其他人能够确认这一点。
@AndreasLichtsinn找不到Xamarin Forms 4.6.0.1693
@PureWeen好,所以我做了一个测试:
我使用Xamarin Forms 4.3.0.908675创建了一个新的Shell Sample App->无闪烁
然后我更新到最新的稳定版4.5.0.495->闪烁
然后我更新到您的最新版本4.6.0.1693->不闪烁做得好! 希望其他人能够确认这一点。
@AndreasLichtsinn我也找不到1693年版本! 此外,每晚4.7.0.531仍然闪烁:/
@angelru @RsZoli在PureWeen发布的已发布工件中
@angelru谢谢您的测试!!!!
@angelru谢谢您的测试!!!!
@PureWeen我无法测试,无法下载
哦,你在引用@AndreasLichtsinn :-)
谢谢@AndreasLichtsinn的测试!!!
@angelru
转到链接:
https://dev.azure.com/xamarin/public/_build/results?buildId=16155&view=results
点击这里:
然后在这里:
然后解压缩zip并在此文件夹中创建本地nuget包源:
然后选择此本地软件包源并从那里安装:
@angelru
转到链接:
https://dev.azure.com/xamarin/public/_build/results?buildId=16155&view=results
点击这里:
然后在这里:
然后解压缩zip并在此文件夹中创建本地nuget包源:
然后选择此本地软件包源并从那里安装:
非常感谢!!! 有用!
我可以确认Xamarin Forms 4.6.0.1693中没有闪烁。
谢谢!
由#10158关闭
最新的Xamarin表格4.8存在相同的问题。 我发现在iOS上带有TextType ='Html'标签的页面会导致此问题...
我打开了一个新书。 #12385
最有用的评论
我用Xaminals样品测试了小坚果
https://github.com/xamarin/Xamarin.Forms/issues/6294
有了这个小细节,闪烁就不再发生