Xamarin.Android:错误APT0000:检索项目的父项时出错:找不到与给定名称“@android:style / Theme.AppCompat”匹配的资源

时间:2017-01-13 19:54:25

标签: android xamarin xamarin.android

我正在尝试在我的Xamarin.Android应用中使用CoordinatorLayout。我一直在使用Theme.Material.Light作为其父级的自定义主题,在我添加CoordinatorLayout之前工作正常。当我添加它时,我收到一个错误,告诉我必须使用Theme.AppCompat主题,但是一旦我执行该应用程序无法构建并给我以下错误:

/{project directory}/Resources/values/Styles.xml(0,0):
Error APT0000: Error retrieving parent for item:
No resource found that matches the given name 
'@android:style/Theme.AppCompat'. (APT0000) (TnpApp.Android)

This answer建议安装与我正在使用的Android SDK相匹配的支持库的主要版本。我试过这个(我认为我做的一切都正确),但它没有帮助。

有没有人有任何想法?

我在Mac上使用Xamarin Studio。

更新1

我在一个干净的Xamarin.Android项目中尝试了MainActivity.cs中的以下代码,并且构建失败并出现相同的错误。

namespace ThemeTest
{
    [Activity(Label = "ThemeTest", MainLauncher = true, Icon = "@mipmap/icon", Theme = "@android:style/Theme.AppCompat.Light")]
    public class MainActivity : Activity
    {
        // ...
    }
}

更新2

我删除了/user/.local/share/Xamarin中的所有文件夹,但Mono for Androidzipsthis answer中的建议。我关闭了Xamarin Studio并重新打开它。我尝试部署该应用程序,Xamarin重新安装了所有软件包,但构建失败并出现原始错误。

3 个答案:

答案 0 :(得分:1)

我只需从我的Styles.xml文件中的@android:style/元素的style标记中删除parent即可解决此问题。看起来像这样......

<style name="MyCustomTheme" parent="@android:style/Theme.AppCompat">

现在看起来像这样......

<style name="MyCustomTheme" parent="Theme.AppCompat">

我很震惊解决方案就是这么简单,但它确实有效。 :)我从this code得到了这个想法。

答案 1 :(得分:0)

我在Visual Studio 2015 / Xamarin中开发并看到了同样的问题。虽然我仍然不了解这个问题的原因或解决方法,但是这个线程确实指出了我正确的方向,这似乎与重新保存styles.xml(对于我的开发环境)有关。

我的styles.xml没有@android:style/,我仍然遇到上面提到的错误。如另一个提议的解决方案中所述,我添加了

<style name="MyCustomTheme.Base" parent="Theme.AppCompat" />

<style name="MyCustomTheme" parent="Theme.AppCompat">之前,保存了styles.xml并重建了我的项目而没有错误。然后我删除了

<style name="MyCustomTheme.Base" parent="Theme.AppCompat" />

重新保存styles.xml并重建,没有错误。在视觉上,我的styles.xml没有改变,但错误消失了。

答案 2 :(得分:0)

如果您最近安装了 google play服务相关软件包(例如firebase,但还有很多其他软件包),则此安装可能与您的 CSproj 相混淆和你的 package.json 文件(查看你的版本控制历史记录以查看这些文件是否被更改),并修改你的目标api版本:从目标Api 25转到目标26例如等。

如果是这种情况,您应该通过以下两种方式之一来解决此问题:

  • 请确保下载您当前定位的sdk版本,为此,请转到工具&gt; SDK管理员

  • 或通过放弃软件包对csproj和package.json文件所做的更改并清理并重建来恢复到旧目标。