【问题标题】:(Android) Xamarin Forms shell app crash after latest Xamarin update(Android) 最新 Xamarin 更新后 Xamarin Forms shell 应用程序崩溃
【发布时间】:2021-05-26 09:20:53
【问题描述】:

所以我有一个 Xamarin Forms Shell 应用程序,其 Shellcontents 设置如下:

<Shell etc etc>
<ShellContent ContentTemplate="Temp1" Route="routeA" Title="titleA" />    
<ShellContent ContentTemplate="Temp2" Route="routeB" Title="titleB" />    
    <MenuItem Text="{x:Static rx:AppResources.Logout}" Command="{Binding LogoutCommand}"/>

</Shell>

启动时,ShellContent A 显示一切正常。但是当我触摸titleB的那一刻,我得到了这个愚蠢的错误。 我一直无法弄清楚,这个错误来自哪里。有什么想法我应该去哪里看?

 No package ID ff found for ID 0xffffffff.
[AndroidRuntime] Shutting down VM
[AndroidRuntime] FATAL EXCEPTION: main

[AndroidRuntime] android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
[AndroidRuntime]    at android.content.res.ResourcesImpl.getResourceTypeName(ResourcesImpl.java:334)
[AndroidRuntime]    at android.content.res.Resources.getResourceTypeName(Resources.java:2300)
[AndroidRuntime]    at androidx.fragment.app.FragmentAnim.loadAnimation(FragmentAnim.java:79)
[AndroidRuntime]    at androidx.fragment.app.DefaultSpecialEffectsController$AnimationInfo.getAnimation(DefaultSpecialEffectsController.java:774)
[AndroidRuntime]    at androidx.fragment.app.DefaultSpecialEffectsController.startAnimations(DefaultSpecialEffectsController.java:144)
[AndroidRuntime]    at androidx.fragment.app.DefaultSpecialEffectsController.executeOperations(DefaultSpecialEffectsController.java:120)
[AndroidRuntime]    at androidx.fragment.app.SpecialEffectsController.executePendingOperations(SpecialEffectsController.java:294)
[AndroidRuntime]    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2190)
[AndroidRuntime]    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2088)
[AndroidRuntime]    at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1990)
[AndroidRuntime]    at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
[AndroidRuntime]    at android.os.Handler.handleCallback(Handler.java:938)
[AndroidRuntime]    at androidx.fragment.app.DefaultSpecialEffectsController.startAnimations(DefaultSpecialEffectsControlleer.dispatchMessage(Handler.java:99)
[AndroidRuntime]    at android.os.Looper.loop(Looper.java:246)
[AndroidRuntime]    at android.app.ActivityThread.main(ActivityThread.java:8430)
[AndroidRuntime]    at java.lang.reflect.Method.invoke(Native Method)
[AndroidRuntime]    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:596)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

【问题讨论】:

  • 是的,我降低了包级别。一切都是好的。除了降低之外,没有什么好的解决办法。 Xamarin 在 5.0.2012 上不再做任何开发,从现在开始都是毛伊岛。
  • fyi - 我通过从项目中删除所有 AndroidX 依赖项来修复它。由于我的所有 nuget 都不依赖于旧的支持库,因此它似乎可以工作。

标签: xamarin.forms xamarin.forms.shell


【解决方案1】:

我没有Temp1Temp2。我创建了一个 Shell Tenplate 进行测试。它在我身边有效。你可以检查下面的代码。

Xaml:

<ShellContent
    Title="titleA"
    ContentTemplate="{DataTemplate local:ItemsPage}"
    Route="routeA" />
<ShellContent
    Title="titleB"
    ContentTemplate="{DataTemplate local:AboutPage}"
    Route="routeB" />

<MenuItem Command="{Binding LogoutCommand}" Text="Page1" />

代码绑定:

public partial class AppShell : Xamarin.Forms.Shell
{
    public ICommand LogoutCommand => new Command(async () => await Shell.Current.GoToAsync("page1"));

    public AppShell()
    {
        InitializeComponent();
        Routing.RegisterRoute("page1", typeof(Page1));
        this.BindingContext = this;
    }
}

【讨论】:

  • 那是愚蠢的事情,它似乎适用于更简单的应用程序。当你开始增加复杂性(我有超过 2 页)它停止工作....
  • 我需要更多代码来重现,以便我可以提出一些建议。可以提供吗?
【解决方案2】:

当我按照此处的提示将 Xamarin.Google.Android.Material 降级到 v1.2.1.1 时,我能够更正此错误:

https://github.com/xamarin/Xamarin.Forms/issues/13843

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    相关资源
    最近更新 更多