【发布时间】:2015-12-01 12:14:34
【问题描述】:
我已经为此苦苦挣扎了一个多星期,因为我认为这与我的环境有关,但我无法缩小范围。
我开始一个空项目,添加一个“空白”活动并接受所有默认值。项目完成设置后,我添加了一个“设置”活动。
在 MainActivity.java 中,我添加了两行代码来连接两个活动,然后构建项目。
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 发送到真实的物理设备并尝试查看设置活动时。
我已经多次启动新的和干净的项目,每个项目都得到相同的结果。我试过干净的构建,我试过删除 R.java 的东西。当我查看我的项目(由添加新活动向导创建)中的 res/drawable/ic_sync_black_24dp.xml 时,我可以看到图标,一切看起来都很正常。
如果我从 pref_headers.xml 文件中删除指定此图标的一行,则项目构建良好,并且设置活动具有其他两个选项的图标,但没有 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 中,添加了设置活动的向导添加了 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 次(创建全新的项目并连接两个活动),重新启动,搜索谷歌,搜索这里,我无法弄清楚向导放的 ic_sync_black_24dp.xml 有什么问题在我的项目中。
由于我假设这可能是我的 IDE 或本地构建配置中的环境问题,因此这里有一些关于我的设置的高级细节: Windows 10、Android Studio 1.5、JRE 1.8.0
【问题讨论】:
-
ic_sync_black_24dp 文件在哪里?
-
你试过重命名它吗?
-
我按照您的步骤在我的设置上重新创建了它,它没有引起任何问题。 Mac 上的 Android Studio 1.5。工作和非工作 Drawable 之间唯一立即明显的区别是,非工作绘图的宽度和高度设置为“24.0dp”,而不是像其他的那样设置为“24dp”,尽管正如我所说,这并没有不会导致我的设置出现问题。
-
@LewisMcGeary - 这就是线索!我把24.0改成了24,现在不崩溃了!我不知道为什么这会是一个依赖于平台的问题,我会根据您的配置与我的配置不同。