用于预棒棒糖设备的ResourcesNotFoundException

时间:2016-04-18 09:00:25

标签: android android-vectordrawable

我已经拥有的东西:

这是我的ImageView:

<ImageView
        android:id="@+id/play_pause"
        android:layout_width="match_parent"
        android:layout_height="@dimen/timer_button_layoutHeight"
        app:srcCompat="@drawable/play_button_vector"
        android:onClick="startOrPauseTimer"/>

我正在使用Android插件版本2.0:

classpath 'com.android.tools.build:gradle:2.0.0'

我在应用程序级别build.gradle的android的defaultConfig中启用了vector drawable支持库标志:

vectorDrawables.useSupportLibrary = true

我还添加了vector drawable支持库依赖项:

compile 'com.android.support:support-vector-drawable:23.2.1'

在Activity类中,我基于点击侦听器动态更改矢量drawable:

playPauseButton = (ImageView) findViewById(R.id.play_pause);
playPauseButton.setImageResource(R.drawable.play_button_vector);

问题:

我在棒棒糖前设备中遇到资源未找到异常。该代码适用于棒棒糖以上。

  

android.content.res.Resources $ NotFoundException:File   可绘制资源ID#0x7f020119

我无法在图像所在的位置看到任何东西。但是,如果我点击图像所在的那个地方,它会被clickListener捕获。我做错了什么?

3 个答案:

答案 0 :(得分:1)

根据Android开发者最近的帖子,

  

对于AppCompat用户,由于版本23.2.0 / 23.2.1 https://code.google.com/p/android/issues/detail?id=205236中的实现中发现的问题,我们决定删除允许您使用Lollipop前设备上的资源使用矢量绘图的功能。使用app:srcCompat和setImageResource()继续工作。

来源:https://plus.google.com/+AndroidDevelopers/posts/iTDmFiGrVne

答案 1 :(得分:1)

尝试使用此而不是ContextCompat.getDrawable()。

Drawable d = AppCompatDrawableManager.get().getDrawable(context, resID);

答案 2 :(得分:0)

我已尝试过上述所有解决方案。没有什么对我有用。唯一对我有用的是非常简单的是将所有支持库更新到最新版本,因为已经修复了这个bug。所以我简单地在构建中做了以下事情,gradle更新了SDK并支持25。

android {
    compileSdkVersion 25
    buildToolsVersion "25"
  defaultConfig {
        targetSdkVersion 25
   }

}
In dependencies 

    compile 'com.android.support:appcompat-v7:25.1.0'
    compile 'com.android.support:design:25.1.0'
    compile 'com.android.support:recyclerview-v7:25.1.0'