我在活动中的ImageView中使用vector,该应用在android 7.0上运行良好,但在android 4.4上崩溃。 Logcat说,Resources$NotFoundException。我已经尝试过在这里发布关于stackoverflow的解决方案,但是似乎都没有用。

这些是我尝试过的解决方案。


在我的gradle文件中添加了这个

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

在活动的OnCreate中添加了此功能

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

在XML文件中将android:src替换为app:srcCompat


这是我的XML代码

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/ic_arrow_back_white_24dp"
            android:tint="@color/colorPrimary"
            android:id="@+id/details_back"
            android:layout_margin="15dp"
            android:layout_alignParentStart="true"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/share"
            android:tint="@color/colorPrimary"
            android:id="@+id/details_share"
            android:layout_margin="15dp"
            android:layout_alignParentEnd="true"/>

    </RelativeLayout>


这是JAVA文件中的代码

    ImageView detail_share;
    detail_share = (ImageView) findViewById(R.id.details_share);
    detail_share.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            // code for sharing item

        }
    });


此外,尽管完全相同,但错误发生在第二个ImageView中,而不是第一个中。我也在Java文件中对待两个图像完全相同。

最佳答案

几天前我遇到了同样的问题。 Android 4.4不支持带有(v21)的矢量,而矢量(v21)在android studio目录树中的名称后面带有褪色字体,这些矢量图形仅受API 21+支持。理想情况下,Android Studio应该将矢量分成大小不同的PNG文件,但出于某些不清楚的原因,Android Studio有时不会自行完成。

看起来您在上述情况下尝试将矢量图形用于“共享”图标,尝试仅从Android Studio中的“材质”图标导入共享图标,这样导入的矢量也受Android 4.4支持。

关于java - Android 4.4上的Resources $ NotFoundException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46863169/

10-10 18:45
查看更多