【问题标题】:ResourcesNotFoundException for pre-lollipop devices棒棒糖前设备的 ResourceNotFoundException
【发布时间】:2016-04-18 09:00:25
【问题描述】:

我已经拥有的:

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

vectorDrawables.useSupportLibrary = true

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

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: 文件 res/drawable/play_button_vector.xml 来自可绘制资源 ID #0x7f020119

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

【问题讨论】:

  • 您正在将任何SVG 转换为矢量?
  • 是的,我收到了 SVG 文件,然后将其导入为矢量可绘制对象。
  • 尝试使用默认向量。在我的情况下,从 SVG 做也会出错。对于默认向量,无需您尝试上述所有内容,它就可以工作。
  • 好的,我会尝试更新。关于为什么 SVG 给出错误而不是默认向量的任何想法?
  • 我也是这个问题的受害者。 :D。对于 Gradle Plugin 2.0+ 和 Gradle Plugin 1.5,您需要添加 --> android { defaultConfig { generatedDensities = [] } // 这由 2.0+ Gradle Plugin aaptOptions { additionalParameters "--no-version-vectors 为您处理" } }

标签: android android-vectordrawable


【解决方案1】:

根据 Android 开发者最近的一篇文章,

对于 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

【讨论】:

  • 所以我想我们又回到了 png :/
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 2018-09-01
      • 2016-08-14
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      相关资源
      最近更新 更多