Я боролся с этим больше недели, потому что я полагаю, что это должно быть что-то с моей средой, но я не могу сузить его.
Я запускаю пустой проект, добавляю одно действие "Пустое" и принимаю все значения по умолчанию. После завершения настройки проекта я добавляю активность "Настройки".
Внутри 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 раз (создание новых проектов и подключение двух действий), перезагрузка, поиск в Google, поиск здесь, и я не могу понять, что не так с ic_sync_black_24dp.xml, что мастер поставил в моем проекте.
Поскольку я делаю предположение, что это может быть экологичным в моей среде IDE или моей локальной конфигурации сборки, вот некоторые детали высокого уровня моей настройки: Windows 10, Android Studio 1.5, JRE 1.8.0