2014-01-21 9 views
26

Ich arbeitete an meinem Android-Programm und als ich es getestet versuchte, bekam ich plötzlich einen Fehler, der "android.content.res.Resources $ NotFoundException: Resource ID # 0x7f030027" ging Die letzte große Änderung, die ich vorgenommen habe, bestand darin, die Aktionsleiste über die Support-Bibliothek hinzuzufügen, aber das funktionierte bereits. Außerdem habe ich eine neue Klasse hinzugefügt, aber selbst wenn ich die Klasse und die zugehörigen Dateien lösche, taucht der Fehler immer noch auf. Ich habe versucht, das Projekt zu säubern und Eclipse mehrmals ohne Erfolg neu zu starten.

Hier ist der Stack-Trace, falls etwas in der Übersetzung verloren gegangen:

01-21 19:05:53.125: E/AndroidRuntime(18599): FATAL EXCEPTION: main 
01-21 19:05:53.125: E/AndroidRuntime(18599): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.blackhat.htmlparsingtest/com.blackhat.htmlparsingtest.MainActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f030027 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.app.ActivityThread.access$700(ActivityThread.java:143) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.os.Looper.loop(Looper.java:137) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.app.ActivityThread.main(ActivityThread.java:4950) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at java.lang.reflect.Method.invokeNative(Native Method) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at java.lang.reflect.Method.invoke(Method.java:511) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at dalvik.system.NativeStart.main(Native Method) 
01-21 19:05:53.125: E/AndroidRuntime(18599): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f030027 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.content.res.Resources.getValue(Resources.java:1026) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2131) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.content.res.Resources.getLayout(Resources.java:865) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.view.LayoutInflater.inflate(LayoutInflater.java:394) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:309) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.app.Activity.setContentView(Activity.java:1914) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.support.v7.app.ActionBarActivity.superSetContentView(ActionBarActivity.java:216) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.support.v7.app.ActionBarActivityDelegateICS.setContentView(ActionBarActivityDelegateICS.java:111) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:76) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at com.blackhat.htmlparsingtest.MainActivity.onCreate(MainActivity.java:39) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.app.Activity.performCreate(Activity.java:5179) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
01-21 19:05:53.125: E/AndroidRuntime(18599): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) 
01-21 19:05:53.125: E/AndroidRuntime(18599): ... 11 more 

Auch habe ich die R.java-Datei und die Ressource überprüft existiert auf jeden Fall, wenn auch, wie ich erwähnt das Projekt Reinigung, die R-Datei löschen und Neustart von Eclipse tut nichts. Eine Sache, die ich fühlte, sollte erwähnt werden, ist jedoch, dass ich zwei R.java-Dateien gefunden habe, eine ist in meinem Projektordner zusammen mit BuildConfig.Java. Der andere ist in android.support.v7.appcompat. Ich weiß, appcompat kann einige Probleme verursachen, so dass ich dachte, es war erwähnenswert, nur für den Fall.

Ich kann nicht einmal meinen Code wie gewohnt funktionieren lassen, so dass jede Hilfe geschätzt wird und lassen Sie mich wissen, wenn Sie weitere Informationen benötigen!

+0

Ich würde sagen, sauberes Projekt, aber da Sie das bereits getan haben, werden wir Code benötigen, der Ihnen hilft. – Ogen

+0

Wenn Sie android.R in Ihren Importen haben, entfernen Sie es und versuchen Sie es erneut, aber abgesehen davon, wie @Clay sagte, werden wir weitere Informationen benötigen. – Melquiades

+0

Ok, welche Art von Code genau? Ich würde annehmen, dass Sie Code von meiner MainActivity und möglicherweise vom Stapel verfolgen müssen? – CheeseCoder

Antwort

68

Sie können Ihre R-Datei für Resources$NotFoundException: Resource ID #0x7f030027 überprüfen. Es wird Ihnen sagen, welche Ressource ein Problem verursacht hat. Als eine alternative Lösung denke ich, dass Sie setText oder irgendeinen Inhalt nur eine int haben könnten. Und wie Sie wissen, wird der Compiler nach dem entsprechenden Ressourcenwert suchen. Also, nur eine leere Zeichenfolge concat als ""

+0

Das hat wirklich geholfen! Wie sich herausstellte, wurde irgendwann die XML-Datei aus dem Layoutordner gelöscht ... Ich schätze die Hilfe! – CheeseCoder

+0

Ich schlug meinen Kopf .. es löste mein Problem. Vielen Dank! –

+0

Nicht funktionieren diese Lösung – delive

0

Schauen Sie sich diesen Link an, vielleicht wird es Ihnen helfen, es ist das gleiche Problem. Wenn das Bereinigen von Projekten nicht hilft, Ihre r.java-Datei zu löschen, wird sie selbst erzeugt. Getting android.content.res.Resources$NotFoundException: exception even when the resource is present in android

+0

Nein, ich habe versucht, R.Java zu löschen, wie es empfohlen wurde, und ich bekomme immer noch den gleichen Fehler. – CheeseCoder

+0

Ich bekomme diesen Fehler nur bei Galaxy S5 nicht mit einem Motorola Handy. Warum ist das? –

+0

@The_Martian Dies liegt wahrscheinlich daran, dass Ihr Problem auf unterschiedliche Telefondichten zurückzuführen ist. Stellen Sie sicher, dass sich jede referenzierte Datei in allen Stalken für beide Geräte befindet, da sie möglicherweise keine Datei auf dem Gerät finden kann. – edwoollard

2

a) könnte es einen Fehler in einem Ihrer Ressource XML-Dateien sein (Strings, Layouts, anim, etc ..) und your.package.name.R kann mit diesem Fehler

EX nicht kompilieren:

<string name="main_header">My problem wasn't in java it was in this string</string> 

Fehler: Apostroph ' durch einen umgekehrten Schrägstrich vorangestellt werden muss \

Korrektur:

<string name="main_header">My problem wasn\'t in java it was in this string</string> 

oder

b) Sie importiert die falsche "R" in der Klasse. stellen Sie sicher, Sie importieren your.package.name.R und nicht android.R

EX:

//You DO NOT want this, unless you are working directly with android's 
    resources, not your own in your project 
import android.R 

Korrektur:

// You want to reference your project's resources, not Android OS's 
import your_package_name_here.R 

hoffe, das hilft, alles Coding!

+0

Jetzt, wo du es erwähnst, habe ich beim Erstellen der neuen Klasse ursprünglich weder strings.xml geändert, noch ein Menü oder Layout erstellt (da ich sowieso ein anderes Menü und eine andere Layoutdatei verwenden wollte. Könnte das zur Situation A führen? – CheeseCoder

+0

Nein das sollte es nicht beeinflussen, und wenn, dann bin ich mir sicher, dass es das nicht mit Fehlern tun würde.Siehe meine aktualisierte Antwort. Hoffe, es hilft – MattMatt

+0

Überprüfte meinen Code nach Ihrer Bearbeitung, und ich bemerkte, dass R nicht importiert wurde Ich kann mich auch nicht daran erinnern, es jemals importiert zu haben, obwohl ich falsch liegen könnte.Ich weiß nicht, ob das einen Unterschied macht, aber wenn, dann habe ich keine Ahnung, wie der Import aus all meinen Klassen ohne mich direkt entfernt wurde Bearbeiten Sie sie. Danke für Ihre Antwort! – CheeseCoder

5

Für mich, beim Erstellen von Layout-Datei landete es in layout-land Ordner, daher die Ausnahme. Ich hoffe, es wird jemandem helfen.

+0

Das ist, was mein Problem ist. Danke :) –

+0

Das war es. Android Studio wird beim Einfügen von Layouts zwischen Projekten manchmal wild angezeigt. –

0

Sie entwickeln wahrscheinlich für neuere Android-Version von Ihrem aktuellen Gerät. Testen Sie das SDK, das für Ihr Testgerät geeignet ist.

7

Ich war immer diese Ausnahme:

android.content.res.Resources$NotFoundException: Resource ID #0x7f02004f

Ich rief PNG Icon von ... \ app \ src \ main \ res \ ziehbar-21

Als ich meine setzen PNG Icon in ... \ app \ src \ main \ res \ ziehbar und ich es nennen,
Mein Problem geht

entfernt

BTW XML bearbeitet von \drawable-21

6

Hatte das gleiche Problem auch. Ich zog falsch ein Layout Ressource (xml) aus dem Layout Verzeichnis in Layout-Land

Aber es stellte sich heraus, wie ich die Dinge um in meiner IDE zu bewegen.

Es funktionierte, nachdem ich es zurück bewegte.

Ich hoffe, das hilft jemandem.

+0

thnxx mann du hast mich gerettet –

0

Wenn Sie Vektor ziehbar in der resource.xml verwenden, die 19 eine <layer-list> auf API-Version oder niedriger werden Sie diese Ausnahme erhalten

0

In meinem Fall wurde ich in scroll einen benutzerdefinierten Stil für meine vertikale Bildlaufleiste mit sehen wie folgt aus:

<ScrollView 
     android:id="@+id/scroller" 
     style="@style/scrollbar_shape_style" 
    ..> 

und mein Stil war wie:

<style name="scrollbar_shape_style"> 
    ... 

ich den ersten Teil zu dieser Änderung:

<ScrollView 
    android:id="@+id/scroller" 
    android:theme="@style/scrollbar_shape_style" 

und hinzugefügt Eltern, um den Stil wie folgt aus:

<style name="scrollbar_shape_style" parent="LightTheme"> 

und Problem gelöst.

0

Sie könnten eine Reihe von Projektressourcen mit

Resources().getSystem().getString( R.string.my_string_id)

, die auf globale Ressourcen verweist anrufen. Um auf Ihre Projektressourcen tun getString() direkt von Ihrer Aktivität:

this.getString(
    R.string.my_string_id); // From within your activity class. 

myActivity.getString(
    R.string.my_string_id); // From other classes as instance reference. 
5

In meinem Fall Fehler nach dem Update auf Android Studio Build aufgetreten: 3.0 Canary 6, i es fest in downgradeing es auf die vorherige Version 3.0 Canary -5 und Bauwerkzeuge Canary-5.

Das Problem mit einigen Inkompatibilität mit Vektor Drawables auf api 19 und unter

EDIT verwandt war: Es ist sieht aus wie das erwähnte Problem auf Android Studio Build behoben wurde: 3,0 Canary 7

+0

Wie kann ich mein Android Studio downgraden? –

+0

Download alte https://developer.android.com/studio/archive.html – murt

+0

gleich hier, nach dem Downgrade funktioniert wieder gut –

1

Ich habe diesen Fehler auf Android 4.2.2, aber nicht auf Android 5 und Android 6 bekommen. Grund war, dass ich einige Vektor-Icons (XML-Dateien für Navigationsschublade) in Drawable-V21-Ordner, da standardmäßig Android-Navigation Navigationsschublade Icons z ic_menu_gallery.xml befand sich im Ordner "drawable-v21". Das Verschieben dieser XML-Dateien (die ich generierte und keine Standard-Dateien) in einen ziehbaren Ordner löste mein Problem. Verschieben Sie die standardmäßig generierten Symbole nicht in eine Zeichnungsdatei, da dies sonst zu einer doppelten Ausnahme führen kann.

1

Ich bin gerade auf das gleiche Problem gestoßen - Reinigung und Wiederaufbau des Projekts löste das Problem für mich!

0

Sie könnten dasselbe Ressourcenfoto zweimal verwenden.
das ist bei mir passiert, wenn verwendet Foto zweimal:
zuerst Zeit im Hauptbildschirm dann verwendet das gleiche Foto in einer anderen Aktivität.

Verwandte Themen