我已经挣扎了一个多星期了,因为我觉得它必须与我的环境有关,但我无法缩小范围.
我启动一个空项目,添加一个"空白"活动并接受所有默认值.项目完成设置后,我添加了"设置"活动.
在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);
}
Run Code Online (Sandbox Code Playgroud)
我将应用程序发送到调试,当我在操作栏上选择"设置"时,应用程序崩溃:
android.content.res.Resources$NotFoundException: File res/drawable/ic_sync_black_24dp.xml from drawable resource ID #0x7f020049
Run Code Online (Sandbox Code Playgroud)
我在虚拟映像上得到同样的错误,当我将APK发送到真实的物理设备并尝试查看设置活动时.
我已经多次开始新的和干净的项目,每个项目都得到相同的结果.我尝试过干净的构建,我尝试删除了R.java的东西.当我查看项目中的res/drawable/ic_sync_black_24dp.xml(由添加新活动向导创建)时,我可以看到图标,一切看起来都很正常.
如果我从pref_headers.xml文件中删除指定此图标的一行,则项目构建正常,并且settings活动具有其他两个选项的图标,但不包含ic_sync_black_24dp.xml图标.
这是我必须从pref_headers.xml手动删除的行:
android:icon="@drawable/ic_sync_black_24dp"
Run Code Online (Sandbox Code Playgroud)
所以这是我的有效pref_headers.xml文件:
<!-- These settings …Run Code Online (Sandbox Code Playgroud)