1

我已经拥有的:

这是我的图像视图:

<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 中启用了矢量可绘制支持库标志:

vectorDrawables.useSupportLibrary = true

我还添加了矢量可绘制支持库依赖项:

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

在 Activity 类中,我正在根据点击侦听器动态更改可绘制的矢量:

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

问题:

我在棒棒糖之前的设备中发现资源未找到异常。该代码适用于棒棒糖。

android.content.res.Resources$NotFoundException:来自可绘制资源 ID #0x7f020119 的文件 res/drawable/play_button_vector.xml

在图像应该存在的地方我什么也看不到。但是,如果我单击图像应该在的那个地方,它就会被 clickListener 捕获。我究竟做错了什么?

4

3 回答 3

1

试试这个而不是 ContextCompat.getDrawable()。

Drawable d = AppCompatDrawableManager.get().getDrawable(context, resID);
于 2016-05-19T11:14:03.480 回答
1

根据 Android Developers 最近的一篇文章,

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

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

于 2016-04-18T09:04:57.733 回答
0

我已经尝试了上面提到的所有解决方案。没有什么对我有用。唯一对我有用的事情非常简单,就是将所有支持库更新到最新版本,因为该错误已在其中修复。所以我在构建中简单地做了以下事情,将 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'
于 2017-02-20T11:48:46.907 回答