Android-Ressource nicht gefunden Ausnahme?

68

Ich habe ein seltsames Problem mit findViewById (id). Es kommt mit einer Ressource zurück, die nicht gefunden wurde, obwohl die Ressource definitiv vorhanden ist. Es ist eine Textansicht in einem Layout neben einer anderen Textansicht. Eine der Textansichten kann ich anhand der ID finden, die andere zeigt die nicht gefundene Ressource an. Gibt es einen Grund, warum dies passieren könnte?

Bobbake4
quelle
Wir können Ihnen nicht helfen, Ihren Code zu sehen. Können Sie die relevanten Teile Ihrer Java- und XML-Dateien veröffentlichen?
Slayton

Antworten:

41

Versuchen Sie, Ihr Projekt zu bereinigen, oder geben Sie Code ein.

Manchmal werden die IDs nicht korrekt neu generiert, wenn Sie Eclipse verwenden. Dies erfordert, dass das Projekt bereinigt und manchmal aktualisiert wird.

Mike dg
quelle
Das war alles was es war ... Was zum Teufel passiert mit dem Projekt, das eine Reinigung erfordert?
Bobbake4
Eclipse wird beim Bauen ziemlich oft durcheinander gebracht.
Dymmeh
Ich kommentiere zwar zu spät, aber ich stehe diesem Problem auch seit ein paar Tagen gegenüber. Ich benutze Android Studio. Ich habe meinen Code bereinigt, ungültig gemacht und neu gestartet, den Computer ausgeschaltet und neu gestartet, aber das Problem besteht weiterhin. :( Bitte helfen Sie, da ich fest stecke.
Ali_Waris
275

Stellen Sie sicher, dass Sie nicht nur versuchen, den Text auf eine Zahl zu setzen, sondern auch erwarten, dass er automatisch in eine Zeichenfolge konvertiert wird.

Terra Caines
quelle
Dies löste auch mein Problem. Ich bin ein bisschen überrascht, dass sie keine Methode haben, die nur Integer.toString () umschließt, aber was auch immer.
Mszaro
4
Dies ist genau in meinem Fall der Fall, wenn ich versuche, Text eine Zahl in eine Textansicht zu setzen, auf die eine von Eclipse generierte Referenzadresse verweist. Wenn Sie dies auch tun, ändern Sie am Ende die TextViewZielreferenzadresse und generieren so diesen Fehler. Sie MÜSSEN also sicherstellen, dass Sie keine Zahl (oder Ganzzahl) in die TextView- setText()Methode einfügen .
Aryo
1
Selbes Problem hier. Ich habe es gelöst, String.valueof (myInt) in die setText-Methode
einzufügen
2
@androider Ich habe myTextView.setText(myInt + "");mich selbst benutzt. Aber laut DIESEM scheint es myTextView.setText(Integer.toString(myInt));der effizienteste Weg zu sein.
Kevin Cruijssen
1
Diese Antwort ist absolut genial.
Sotti
26

Die ausgelöste Ausnahmemeldung ist nicht sehr beschreibend. Es ist sehr wahrscheinlich, dass Sie versuchen, den int- Wert in String umzuwandeln . Durch Anwenden der folgenden Änderung wurde das Problem für mich behoben.

Code vor dem Fix:

 itemPrice.setText(foodMenuItems.get(position).getItemPrice());

Code nach dem Fix:

 itemPrice.setText(Integer.toString(foodMenuItems.get(position).getItemPrice()));
Rohit Gupta
quelle
2
oder fügen Sie einfach "" vor Ihrem int
Mightian
hat für mich gearbeitet! Sie hätten es implementieren sollen, um eine Klassenbesetzungsausnahme oder was auch immer
auszulösen.
Gleiches gilt für Toast-Nachrichten, wenn Sie int zeigen möchten, dass Sie von Ihrem Pojo in einer Toast-Nachricht erhalten. Android Studio warnt Sie nicht
Ege Kuzubasioglu
18

Nur um die Antwort von Terra Caines zu klären, da ich gesehen habe, dass es den Menschen viel passiert; TextViewund andere Textkomponenten haben 2setText() Funktionen mit 1 Parameter.

Einer von ihnen ist mit a Stringund einer mit int. Das intist offensichtlich für eine Zeichenfolge Ressource wie R.string.myString- was für diejenigen, die nicht wussten,R.exm immer als dargestellt wird int. Die Zeichenfolge dient zum Einfügen einer Zeichenfolge.

So möchte ich zum Beispiel int x = 1;in eine Textansicht einfügen. Doing mTextView.setText(x); die Textview wird bewirken , dass die Ressource - Funktion zu verwenden , und da es wahrscheinlich keine Ressource mit der ID 1 ist , wird es die Ausnahme Ressource nicht gefunden werfen. Wenn Sie ein int oder eine beliebige Zahl in die Funktion setText () einfügen möchten, stellen Sie sicher, dass Sie es in konvertieren String (x+"")oder (x.toString())den Trick für Sie erledigen.

Hoffe, es hat den Menschen etwas Zeit gespart.

Shai
quelle
Oh Mann, schöne Beobachtung hat mir wirklich den Tag gerettet :)
Summe
10

textViewCount.setText(someArray.size()); war mein Problem.

Rufen Sie einfach toString();an, um das Problem zu beheben.

    Integer size = mSomeArray.size();
    textViewReplyCount.setText(size.toString());
Youngjae
quelle
1
Das Problem wurde durch Hinzufügen vonresultSizeOnUI.setText(((Integer)productSearchResultSize).toString());
Günay Gültekin
3

Stellen Sie sicher, dass Sie keine programmgesteuerten Attribute festlegen, die nicht verfügbar sind. Ich hatte das gleiche Problem und der Grund war ein RemoteView.setFloat(id,"setWeight",1.0f);zu a LinearLayout, das mit Android vor 4.x nicht unterstützt wurde. Leider war die Fehlermeldung dabei nicht sehr hilfreich.

Jürgen 'Kashban' Wahlmann
quelle
0

In meinem Fall hatte ich eine intVariable (zusätzlich zu meiner Aktivitätsklasse ) und ich habe versucht, diese int-Variable als zweiten Parameter an Toast.makeText()( um dies dem Benutzer zu zeigen ) zu übergeben. Ich weiß nicht, ob ich dumm war oder ob es sich um eine Android-Entwicklungsplattform handelt ! : p

Mehdi Dehghani
quelle
0

Überprüfen Sie, ob die Eigenschaft android:icon="@mipmap/ic_launcher"unter dem Anwendungstag Ihrer Manifestdatei vorhanden ist.

Arsalan Shah
quelle
0

In meinem Fall habe ich versucht, einen zeichnbaren Selektor mit dem Element android: color an den Hintergrund der Ansicht zu übergeben. Das Problem hierbei ist, dass Sie die Hintergrundfarbe nicht mit einem Farbwähler definieren können, sondern einen zeichnbaren Selektor benötigen.

Dmitry Android
quelle