Xamarin:无法将类型 Android.Widget.LinearLayout 的实例转换为类型 Android.Support.V7.Widget.Toolbar

Vis*_*hnu 8 android xamarin.android xamarin xamarin.forms

该应用程序在 Android 6 或更低版本上运行。但是当在 Android 7 (Nougat) 上运行时,它会抛出运行时异常。

System.InvalidCastException: Unable to convert instance of type 'Android.Widget.LinearLayout' to type 'Android.Support.V7.Widget.Toolbar'.
Run Code Online (Sandbox Code Playgroud)

错误在 Xamarin (Visual Studio 2017) 中抛出,代码如下:

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        ToolbarResource = Resource.Layout.toolbar;
        TabLayoutResource = Resource.Layout.tabs;

        base.OnCreate(bundle); //Runtime error here
        .... Other code ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经对所有 Nuget 包进行了最新更新,但无法确定问题。为了进行测试,我使用的是 Moto G4+(Android 7.0)。有人可以帮忙吗?

编辑1:

工具栏的布局如下:(在资源> 布局> 工具栏.axml 下)。这在 Android 6 的 App 版本发布时就已经存在了。但是现在因为 Android 7 问题访问了应用程序。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar" 
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
Run Code Online (Sandbox Code Playgroud)

Jor*_*dez 8

我通过清理整个解决方案并关闭模拟器来解决这个问题。然后再次部署,它应该可以工作。


Vis*_*hnu 0

android_m2repository_r29.zip通过从https://developer.xamarin.com/guides/android/troubleshooting/resolving-library-installation-errors/下载存储库解决了这个问题,并给出了相同的说明。

我还通过创建一个新的解决方案来测试这个问题,并得到一些样式“资源未找到错误”。这也得到了解决,然后原来的问题也得到了解决。