【问题标题】:Error inflating class android.support.v7.widget.Toolbar after updaring to v7.AppCompat Version 23.3 Xamarin Forms 2.2.0.31升级到 v7.AppCompat 版本 23.3 Xamarin Forms 2.2.0.31 后,膨胀类 android.support.v7.widget.Toolbar 时出错
【发布时间】:2020-09-01 02:19:54
【问题描述】:

我正在创建一个 Xamarin 表单项目并将 android.support.v7.widget.Toolbar 与 FormsAppCompatActivity 一起使用。我在下面发布的代码正在使用 Xamarin.Android.Support.v7.AppCompat 版本:23.0.1.3

但是在我升级到 23.3.0 之后,它开始抛出 Android.Views.InflateException: Binary XML file line #1: Error inflating class android.support.v7.widget.toolbar 异常。

这是我的 MainActivity 代码

[Activity(Label = "AppMob.Client", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {

        protected override void OnCreate(Bundle bundle)
        {
            FormsAppCompatActivity.ToolbarResource = Resource.Layout.toolbar;
            FormsAppCompatActivity.TabLayoutResource = Resource.Layout.tabs;

            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);

            Xamarin.FormsMaps.Init(this,bundle);                        
            GoogleAnalyticsHelper.GetGASInstance().Initialize_NativeGAS(Application.Context);  //For GA initialization
            LoadApplication(new App());
        }
}

这是我的 Resource.Layout.toolbar 代码

  <?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"
        app:layout_scrollFlags="scroll|enterAlways" />

我已将 Xamarin 表单更新到 2.2.0.31

此版本 Xamarin Forms 的依赖项提及:

Xamarin.Android.Support.v4 (= 23.3.0) 
Xamarin.Android.Support.Design (= 23.3.0) 
Xamarin.Android.Support.v7.AppCompat (= 23.3.0) 
Xamarin.Android.Support.v7.CardView (= 23.3.0) 
Xamarin.Android.Support.v7.MediaRouter (= 23.3.0)

因此它应该与 23.3 兼容。

【问题讨论】:

    标签: xamarin


    【解决方案1】:

    请不要在activity.cs 中声明布局主题 您必须将其添加到 youractivity.cs:

    Theme = "@style/MyThemesss"
    

    【讨论】:

      【解决方案2】:

      一旦我遇到了您的问题,我就按照以下步骤来解决它:

      • OnCreate(Bundle bundle) 的第一行中调用RequestWindowFeature(WindowFeature.Notiltle) 并再次检查是否删除了ActionBar。
      • 清理解决方案,删除所有支持库依赖项,更改工具栏 ID 并重新启动 Visual Studio(或 Xamarin Studio)然后重新添加支持库并构建解决方案。 (有时错误的原因是解决方案中的缓存或大量其他垃圾文件。)
      • 考虑不使用"?attr/colorPrimary",而是直接调用颜色资源。

      毕竟,如果您可以发布您的样式 xml 文件和主布局,我会更有效地提供帮助。

      【讨论】:

      • 关于第三点:你的意思是用“@color/colorPrimaryDark”代替“?attr/colorPrimary”吗?唯一的区别是通过直接调用资源,您的应用可以避免在所有资源/值文件中查找该值,不是吗?
      【解决方案3】:

      此错误解决如下。

      您需要为该解决方案更新 Xamarin 表单。在 NuGet 包中。 也显示 CardView 的包。

      那么你应该做干净,重建。

      这将解决这个问题。

      【讨论】:

        【解决方案4】:

        我有同样的问题, 可能您可能会删除标签中的某些选项,例如 api 21 中不支持的“app:layout_scrollFlags”,如果所有选项都正常,请删除“?attr”值并改用它们的实际值。

        【讨论】:

          【解决方案5】:

          在我的例子中,我发现我写的是 android.suport.v7.widget.Toolbar ("suport" 用一个字母 "p" 而不是 "support")

          当我修复它时它立即起作用。

          【讨论】:

            【解决方案6】:

            清理解决方案并重新启动 VS 对我有帮助。

            【讨论】:

              猜你喜欢
              • 2014-12-21
              • 1970-01-01
              • 2017-05-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多