更新到v7.AppCompat版本23.3 Xamarin Forms 2.2.0.31后出现类android.support.v7.widget.Toolbar错误

时间:2016-05-18 15:27:58

标签: xamarin

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

但是在我升级到23.3.0后,这已经开始抛出Android.Views.InflateException:二进制XML文件行#1:错误膨胀类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 Forms更新为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兼容。

6 个答案:

答案 0 :(得分:2)

一旦我遇到问题,我就按照以下步骤解决问题:

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

毕竟如果你可以发布你的样式xml文件和主要版面,我会更有效地帮助。

答案 1 :(得分:0)

此错误的解决方法如下。

您需要为该解决方案更新Xamarin Forms。在NuGet包中。 也是CardView的包裹。

然后你应该做清理,重建。

这将解决这个问题。

答案 2 :(得分:0)

您可以不在activity.cs中声明布局主题 你必须将它添加到youractivity.cs:

Theme = "@style/MyThemesss"

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在我的情况下,我发现我写了android.suport.v7.widget.Toolbar(“ suport”带有一个字母“ p”而不是“ support”)

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

答案 5 :(得分:0)

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