在特定手机上找不到R $风格的类

时间:2016-01-11 10:53:47

标签: android android-resources samsung-mobile

我有这种奇怪的行为,在我的三星Galaxy上我得到了这个错误,它无法找到班级R$styleable。当我在Nexus 5或Nexus 4上运行相同的代码时,我没有遇到问题,一切正常。

我收到此异常的行位于我的自定义Spinner实施ImageSpinner中:

TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ImageSpinner);

这是我得到的例外:

java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package.name/my.package.name.NavigationSetupActivity}: android.view.InflateException: Binary XML file line #39: Error inflating class my.package.name.views.ImageSpinner

Caused by: java.lang.NoClassDefFoundError: my.package.name.R$styleable

这是位于值/ attrs.xml中的可设置样式文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="ImageSpinner">
        <attr name="arrowTint" format="color" />
        <attr name="hideArrow" format="boolean" />
    </declare-styleable>
</resources>

三星Galaxy手机的操作系统版本是4.2.2(CyanogenMod),但也在三星Android操作系统上它崩溃了。 Nexus 5是6.0.1,Nexus 4是棒棒糖版本。 sdk工具和编译版本如下:

compileSdkVersion 23
buildToolsVersion '23.0.2'
minSdkVersion 16
targetSdkVersion 23

我试图清理项目并检查资源文件,一切似乎都没问题,但我真的没有更多想法如何解决这个问题。有没有人知道如何解决这个问题?

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

如果您在旧版本上运行该应用,则必须更改: compile-sdk降低sdks。这就是为什么这个应用程序适用于一些较新的手机,而它不适用于你提到的其他手机。 check out this link

Styeleable类已从较新的SDK中删除,因为SDK版本之间的属性不断变化。 这就是为什么你为了使用Styleable类而得到错误的原因,你必须使用旧版本的SDK

java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package.name/my.package.name.NavigationSetupActivity}: android.view.InflateException: Binary XML file line #39: Error inflating class my.package.name.views.ImageSpinner


Caused by: java.lang.NoClassDefFoundError: my.package.name.R$styleable