Xamarin“Resource.Layout”不包含“Tabbar”错误的定义

Posted

技术标签:

【中文标题】Xamarin“Resource.Layout”不包含“Tabbar”错误的定义【英文标题】:Xamarin 'Resource.Layout' does not contain a definition for 'Tabbar' error 【发布时间】:2018-01-05 17:19:17 【问题描述】:

我已经创建了一个基本的 xamarin.forms 项目(使用 PCL 代码共享策略),但在 MainActivity::OnCreate() 中的以下两行出现错误

TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;

CS0117“Resource.Layout”不包含“Tabbar”的定义 CS0117“Resource.Layout”不包含“工具栏”的定义

资源文件以Resources\layout\Tabbar.axmlResources\layout\Toolbar.axml 存在,并且它们的构建操作都设置为androidResource

我怀疑我的 android SDK 安装有问题。目前安装了以下软件包:

但 Visual Studio 2015 中的 Run 按钮仍显示 Android 6.0 API 23 并且无法更改:

我还将Android项目的Target Framework版本设置为7.1:

项目结构如下:

我已经按照this tutorial一步步创建了示例项目。

如何修复错误?

【问题讨论】:

能否提供样例工程?这将告诉我们问题是您的项目还是环境 @YuriS 用项目结构的快照和教程源代码的链接更新了问题。请注意,即使是初学者xamarin.forms 模板项目也会出现此错误,并且与我遵循的教程无关。 你想让我用teamviewer看看你的机器吗? @YuriS 不幸的是,这不是一个选项 没问题。然后检查你的环境。 【参考方案1】:

问题似乎在安装的 API 中。对我来说,必须安装哪些 API 仍然有点神秘,但删除构建工具 24 并安装构建工具 26.0.1 解决了构建问题。

然后安装缺少的 NDK 并在 Xamarin 选项中设置路径。 现在有 2 个选项可用于支持 HAXM 和/或 Hyper-V 的计算机

    HAXM。禁用 Hyper-V。然后在 AVD 管理器中更改未创建的模拟器设置,并使用 Android SDK 为模拟器下载 Itom 图像。下载并安装 HAXM。你准备好了。 启用 Hyper-V。下载并安装 Hyper-V VS 模拟器。运行它并创建模拟器虚拟机。你准备好了。

运行您的应用程序。

【讨论】:

对我没有帮助。运行 Visual Studio Mac 2017。【参考方案2】:

当我在“layout”文件夹中包含两个文件时发生这种情况:Tabbar.axmlToolbar.axml。遵循 Xamarin 文档:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/android/appcompat-material-design

我解决了这个问题,只需右键单击这些文件,选择属性并将 Build Action 更改为 AndroidResource

【讨论】:

当你在 layout 文件夹中包含一个文件时,VS 会添加 xml 扩展名,并且 Build Action 是 AndroidResource。如果将扩展名更改为 axml,则 Build Action 将更改为 Content。这就是问题所在!

以上是关于Xamarin“Resource.Layout”不包含“Tabbar”错误的定义的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Android:为什么重写OnSaveInstanceState永远不会被调用?

从布局中删除子项

为什么我不能注册我的Android设备? xam.pushnotification

二进制 XML 文件第 1 行:Xamarin Android 中 Google Maps 的类片段错误膨胀错误

新的 Xamarin 项目不使用最新的 Xamarin 版本

TeamCity 上的 Xamarin 表单:Xamarin.Forms 任务与目标不匹配