Ich habe damit seit über einer Woche gekämpft, weil ich denke, dass es etwas mit meiner Umgebung sein muss, aber ich kann es nicht eingrenzen.
Ich starte ein leeres Projekt, füge eine einzelne "Leere" Aktivität hinzu und akzeptiere alle Standardeinstellungen. Nachdem das Projekt abgeschlossen ist, füge ich eine Aktivität "Einstellungen" hinzu.
In MainActivity.java, füge ich zwei Zeilen Code, um die beiden Aktivitäten zu verbinden, und dann das Projekt zu erstellen.
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);
}
ich senden, um die Anwendung zu debuggen, und wenn ich „Einstellungen“ auf der Aktionsleiste auswählen, stürzt die Anwendung mit:
android.content.res.Resources$NotFoundException: File res/drawable/ic_sync_black_24dp.xml from drawable resource ID #0x7f020049
ich diesen gleichen Fehler auf den virtuellen Bildern, und wenn Ich sende das APK an ein echtes physisches Gerät und versuche, die Einstellungsaktivität einzusehen.
Ich habe mehrmals neue und saubere Projekte gestartet, und ich bekomme das gleiche Ergebnis mit jedem Projekt. Ich habe saubere Builds ausprobiert, ich habe versucht, das R.java-Zeug zu löschen. Wenn ich mir die res/drawable/ic_sync_black_24dp.xml in meinem Projekt anschaue (die mit dem Assistenten zum Hinzufügen neuer Aktivitäten erstellt wurde), kann ich das Symbol sehen und alles sieht normal aus.
Wenn ich die eine Zeile aus der Datei pref_headers.xml lösche, die dieses Symbol angibt, wird das Projekt ordnungsgemäß erstellt, und die Einstellungsaktivität enthält Symbole für die beiden anderen Optionen, jedoch nicht für das Symbol ic_sync_black_24dp.xml.
Hier ist die Linie, die ich manuell aus pref_headers.xml löschen müssen:
android:icon="@drawable/ic_sync_black_24dp"
Das ist also die gültige pref_headers.xml Datei für mich:
<!-- 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" />
In res Drawable gibt es 3 xml-Dateien, die vom Assistenten hinzugefügt wurden und die Einstellungsaktivität hinzufügten. Alle 3 werden für mich korrekt angezeigt und zeigen eine gültige Vorschau eines Symbols an.
Hier wird der Inhalt des "guten" xml, ic_info_black_24dp.xml ist:
<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>
Hier ist die fragwürdige 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>
Auch hier habe ich versucht, das vielleicht 15 mal (Erstellen von brandneuen Projekten und Verbinden der beiden Aktivitäten), neu gestartet, google gesucht, hier gesucht, und ich kann nicht herausfinden, was mit ic_sync_black_24dp.xml falsch ist, das der Assistent in mein Projekt gelegt hat.
Da ich eine Annahme mache, dass dies in meinem IDE oder meinem lokalen Build-Konfiguration Umwelt sein kann, sind hier einige hohe Details zu meinem Setup: Microsoft Windows 10, Android Studio 1.5, JRE 1.8.0
Wo ist ic_sync_black_24dp Datei? – Sunny
Haben Sie versucht, es einfach umzubenennen? – Nanoc
Ich folgte Ihren Schritten, um dies auf meinem Setup neu zu erstellen, und es verursachte kein Problem. Android Studio 1.5 auf dem Mac. Der einzige sofort erkennbare Unterschied zwischen den funktionierenden und nicht arbeitenden Drawables besteht darin, dass die Breite und Höhe in der nicht arbeitenden Zeichenkette auf "24.0dp" anstatt auf "24dp" wie bei den anderen gesetzt wird, obwohl das, wie gesagt, nicht der Fall ist Es gibt kein Problem mit meinem Setup. –