ic_sync_black_24dp.xml 的 android.content.res.Resources$NotFoundException

标签 android android-layout

我已经为此苦苦挣扎了一个多星期,因为我认为它必须与我的环境有关,但我无法缩小范围。

我开始一个空项目,添加一个“空白” Activity 并接受所有默认设置。项目设置完成后,我添加一个“设置” Activity 。

在 MainActivity.java 中,我添加了两行代码来连接两个 Activity ,然后构建项目。

public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {

        Intent intent = new Intent(this, SettingsActivity.class);
        startActivity(intent);

        return true;
    }

    return super.onOptionsItemSelected(item);
}

我发送应用程序进行调试,当我在操作栏上选择“设置”时,应用程序崩溃并显示:

android.content.res.Resources$NotFoundException: File res/drawable/ic_sync_black_24dp.xml from drawable resource ID #0x7f020049

我在虚拟图像上遇到了同样的错误,当我将 APK 发送到真实的物理设备并尝试查看设置 Activity 时。

我已经开始了好几次新的干净的项目,每个项目都得到了相同的结果。我试过干净的构建,我试过删除 R.java 的东西。当我查看我的项目(由添加新 Activity 向导创建)中的 res/drawable/ic_sync_black_24dp.xml 时,我可以看到图标,一切看起来都很正常。

如果我从 pref_headers.xml 文件中删除指定此图标的一行,项目构建正常,并且设置 Activity 有其他两个选择的图标,但没有 ic_sync_black_24dp.xml 图标。

这是我必须从 pref_headers.xml 中手动删除的行:

    android:icon="@drawable/ic_sync_black_24dp"

所以这是对我来说有效的 pref_headers.xml 文件:

<!-- These settings headers are only used on tablets. -->

<header
    android:fragment="com.schramauto.anothertrial.SettingsActivity$GeneralPreferenceFragment"
    android:icon="@drawable/ic_info_black_24dp"
    android:title="@string/pref_header_general" />

<header
    android:fragment="com.schramauto.anothertrial.SettingsActivity$NotificationPreferenceFragment"
    android:icon="@drawable/ic_notifications_black_24dp"
    android:title="@string/pref_header_notifications" />

<header
    android:fragment="com.schramauto.anothertrial.SettingsActivity$DataSyncPreferenceFragment"
    android:title="@string/pref_header_data_sync" />

在 res\drawable 中,添加设置 Activity 的向导添加了 3 个 xml 文件。所有 3 个都对我正确显示并显示有效的图标预览。

这是“好”xml ic_info_black_24dp.xml 的内容:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm1,15h-2v-6h2v6zm0,-8h-2V7h2v2z" />
</vector>

这是有问题的 XML (ic_sync_black_24dp.xml):

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24.0dp"
    android:height="24.0dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01,-.25 1.97,-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0,-4.42,-3.58,-8,-8,-8zm0 14c-3.31 0,-6,-2.69,-6,-6 0,-1.01.25,-1.97.7,-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4,-4,-4,-4v3z" />
</vector>

同样,我已经尝试了大约 15 次(创建全新项目并连接两个 Activity ),重新启动,搜索谷歌,搜索这里,但我无法弄清楚向导放置的 ic_sync_black_24dp.xml 有什么问题在我的项目中。

由于我假设这可能是我的 IDE 或我的本地构建配置中的环境问题,所以这里有一些关于我的设置的高级细节: Windows 10、Android Studio 1.5、JRE 1.8.0

最佳答案

似乎问题出在 API 21 上,提到的 24.0dp 并没有为我解决问题,而是我收到了:

E/PathParser: error in parsing "c-3.31 0,-6,-2.69,-6,-6 0,-1.01.25,-1.97.7,-2.8"

我在 https://github.com/google/material-design-icons/issues/225 找到了答案

事实证明,pathData is invalid 无法在 API 21 中正确解析(该问题在 API 22 或 23 中不存在)。 只需将 pathData 替换为:

android:pathData="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01,-.25 1.97,-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0,-4.42,-3.58,-8,-8,-8zm0 14c-3.31 0,-6,-2.69,-6,-6 0,-1.01 .25,-1.97 .7,-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4,-4,-4,-4v3z"

关于ic_sync_black_24dp.xml 的 android.content.res.Resources$NotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34020222/

相关文章:

android - 带有 ADT : Moving installed component from one pc to another 的 Google Android 和 Eclipse

java - AccessibilityService 对 OnKeyEvent() 没有响应

android - 将布局 XML 扩展为自定义 LinearLayout 会创建冗余的 LinearLayout View

android - 如何绕过 ICS 和 Jellybean 中不一致的 DatePicker 小部件

Android - 在两个Activity之间切换时,Activity生命周期方法的调用顺序

java - 十六进制字符串到颜色名称

android - 安装 apk "Open"和 "Done"按钮显示后,单击打开按钮不会将类别添加为启动器

android - 如何在Android中定义 "inflation"

android - Activity 已泄露窗口 android.widget.PopupWindow API 27

android - 如何使用固定大小的webview?