Bitte lassen Sie mich wissen, wo ich falsch liege, um den Fehler zu erhalten.
Ich erstelle eine App, deren Aktivität nur im Querformat sein soll. Also habe ich folgendes in die AndroidManifest.xml Datei eingefügt
<activity Android:name=".LandScapeImageActivity" Android:screenOrientation="landscape"></activity>
Ich habe einen Ordner wie erstellt
/ res/layout-land
und fügen Sie ein Layout mit dem Namen see_today_landscape_layout hinzu.
und in onCreate()
habe ich folgendes hinzugefügt
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.see_today_landscape_layout);
....
}
Beim Ausführen meiner App wird jedoch die folgende Fehlermeldung angezeigt
02-06 13:46:14.358: E/AndroidRuntime(13286): FATAL EXCEPTION: main
02-06 13:46:14.358: E/AndroidRuntime(13286): Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mid.kew.activities/com.mid.kew.activities.LandScapeImageActivity}: Android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2787)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2803)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.app.ActivityThread.handleRelaunchActivity(ActivityThread.Java:4066)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.app.ActivityThread.access$2400(ActivityThread.Java:135)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:2140)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.os.Handler.dispatchMessage(Handler.Java:99)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.os.Looper.loop(Looper.Java:144)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.app.ActivityThread.main(ActivityThread.Java:4937)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Java.lang.reflect.Method.invokeNative(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Java.lang.reflect.Method.invoke(Method.Java:521)
02-06 13:46:14.358: E/AndroidRuntime(13286): at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:868)
02-06 13:46:14.358: E/AndroidRuntime(13286): at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:626)
02-06 13:46:14.358: E/AndroidRuntime(13286): at dalvik.system.NativeStart.main(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286): Caused by: Android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.content.res.Resources.getValue(Resources.Java:892)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.content.res.Resources.loadXmlResourceParser(Resources.Java:1869)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.content.res.Resources.getLayout(Resources.Java:731)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:318)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:276)
02-06 13:46:14.358: E/AndroidRuntime(13286): at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:207)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.app.Activity.setContentView(Activity.Java:1654)
02-06 13:46:14.358: E/AndroidRuntime(13286): at com.mid.kew.activities.LandScapeImageActivity.onCreate(LandScapeImageActivity.Java:103)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1069)
02-06 13:46:14.358: E/AndroidRuntime(13286): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2751)
02-06 13:46:14.358: E/AndroidRuntime(13286): ... 12 more
Ich habe R.Java angekreuzt und es hat die Ressource mit der ID 7f03002b, nach der die Ausnahme sucht und die dort vorhanden ist ...
Ich habe das Projekt zum Beispiel fünfmal gesäubert und neu erstellt, aber das Problem tritt immer noch auf.
Seltsamerweise hat das gestern funktioniert und heute nicht. Der Code ist der gleiche.
wenn es wieder vorkommt, löschen Sie die r.Java-Datei. es wird automatisch generiert.
Für meinen Zustand nahm die Ursache den Parameter int
für TextView
. Lassen Sie mich ein Beispiel zeigen
int i = 5;
myTextView.setText(i);
ruft die obigen Fehlerinformationen ab.
Dies kann behoben werden, indem int
in String
konvertiert wird
myTextView.setText(String.valueOf(i));
Wenn Sie int
schreiben, wird eine Ressource erwartet, nicht der Text, den Sie schreiben. Seien Sie also vorsichtig, wenn Sie in Android ein int
als String
festlegen.
Da Sie das Layout explizit festlegen, möchten Sie möglicherweise versuchen, es in den Standardordner/layout abzulegen, der sich nicht im Ordner/layout-land befindet, da Sie Android automatisch die Drehung für Sie ausführen möchten .
Versuchen Sie, Ihre Layout-XML aus dem Ordner res/layout-land
In den Ordner res/layout
Zu verschieben
In meinem Fall war meine Build Tools-Version in meinem build.gradle für das App-Modul in einem alten Projekt veraltet. Das Update hat das Problem behoben:
Android {
...
buildToolsVersion "19.0.1"
...
Aktualisiert auf die neueste Build-Tools-Version (25.0.1) und synchronisiert das Projekt und alles war wieder in Ordnung.
Stellen Sie sicher, dass Ihre Importe korrekt sind. Ich hatte ein ähnliches Problem, bei dem R
auf die Datei Android System R
zeigte, nicht auf meine lokale.
Ich bin heute auf dasselbe gestoßen. In meinem Fall habe ich einen Ganzzahlwert aus meiner Firebase-Datenbank gelesen und an setText () einer TextView übergeben, ohne ihn in eine Ganzzahl umzuwandeln. Also benutze einfach:
textview.setText(intvalue + "");
oder
textView.setText(String.valueOf(intValue));
Dies kann auf eine andere Sprache im Telefon zurückzuführen sein, für die Ihr Code nicht das Asset hat. Beispiel: Ihre preference.xml wird in xml-en abgelegt, und Sie versuchen, Ihre App auf einem Telefon auszuführen, für das Französisch ausgewählt ist. Die App stürzt ab.
Ich habe diesen Fehler aus einem anderen Grund erhalten:
Ich hatte die Datei res/xml/data.xml
Und habe versucht, sie mit der Klasse Resources
zu laden:
Resources.getSystem().getXml(R.xml.data);
Dies ist jedoch falsch, da die Methode Resources.getSystem()
ein globales Shared Resources-Objekt zurückgibt, das nur Zugriff auf Systemressourcen bietet.
Der richtige Weg ist wie folgt (von innen Aktivität):
this.getResources().getXml(R.xml.data);
Dies kann auch zu Problemen führen: Aus Versehen wurde eines meiner Layouts in meinem Tablet-Ressourcenordner geparkt, sodass dieser Fehler nur bei einem Telefonlayout auftritt. Das Telefonlayout hatte einfach keine passende Layoutdatei.
Ich habe wieder gearbeitet, nachdem ich die Layoutdatei in den richtigen Standardordner verschoben und ein neues Projekt erstellt habe.
sogar die Antwort wurde akzeptiert, aber ich habe eine andere Antwort. Meistens tritt es auf, wenn Sie einen Text zur Ansicht zuweisen. beispielsweise .
currectText.setText(progress);
aber wenn parameter nicht string ist, gibt es dir
Android.content.res.Resources$NotFoundException: String resource ID
machen Sie also einen Parameter als String. Verwenden Sie einfach den Operator '+'
currectText.setText(""+progress);
ich übergebe int in der setText-Methode, die gerade in die String-Problemlösung konvertiert wurde
2. Option, wenn es Integer
ist
currectText.setText(String.valueOf(progress));
Ich habe Ordner build
in einem Projekt gelöscht. Nach bereinigt und neu aufgebaut in Android Studio. Dann korrigiert Fehler in build.gradle und AndroidManifest.
Ich habe diese Fehlermeldung erhalten, als ich versucht habe, mit getInt ("ID") von One Intent auf Bundle-Daten zuzugreifen.
Ich habe es mit getString ("ID") gelöst.
Von Activity1 hatte ich
Intent intent=new Intent(this,ActivityB.class);
intent.putExtra("data",data)//
startActivity(intent);
Bei Aktivität B
Bundle bundle=getIntent().getExtras();
if(extras!=null){
// int x=extras.getInt("Data"); This Line gave me error int
x=Integer.parseInt(extras.getString("Data")); // This solved the problem.
}
Eclipse: Projekt> Reinigen
arbeitete für mich. Ich bekomme das oft, wenn ich Layouts von anderen Apps in eine neue App kopiere.
Nervig.
In Ihrer XML-Datei ist die Bildschirmausrichtung auf Querformat eingestellt. Wenn Sie Eclipse zum Generieren dieser Datei verwendet haben, wurde sie unter res/layout-land/folder erstellt. Wenn Sie jedoch eine Aktivität im Hochformatmodus öffnen, sucht die Anwendung in res/layout-port/folder oder im regulären res/layout/nach XML. . Wenn Sie nicht über XML für den Hochformatmodus verfügen, stürzt Ihre Anwendung ab.
Stellen Sie sicher, dass das R, auf das Sie zeigen, das richtige ist. Ich hatte ein sehr ähnliches Problem, bei dem von Eclipse ein Import eingefügt wurde, der auf die System R-Datei und nicht auf die Projektdatei zeigte. Es hat viel Kopfkratzen gekostet. Hoffe das hilft.