Warum kann ich Resources.getSystem () ohne Laufzeitfehler nicht verwenden?

7
%Vor%

Ich bekomme diesen Fehler

01-14 12: 20: 57.591: E / AndroidRuntime (1825): Verursacht von: android.content.res.Resources $ NotFoundException: String resource ID # 0x7f040003

Der Code, der den Fehler verursacht, ist die einzelne Zeile innerhalb von createProfileTable, insbesondere Resources.getSystem (). getString (R.string.create_profile_table_sql) wenn ich eine Klassenvariable verwende, um einen Kontext zu halten und zu tun context.getString (R.string.create_profile_table_sql) Ich erhalte keine Fehler, aber ich möchte das nicht tun, weil ich Speicherlecks vermeiden möchte und entsprechend dem, was ich weiß, sollte das funktionieren. Irgendeine Idee was passiert?

    
Garzahd 14.01.2012, 17:36
quelle

3 Antworten

16

Gemäß der Android-Dokumentation bietet Resources.getSystem() nur Ressourcen auf Systemebene, nicht auf Anwendungsebene (wie die Ressourcen in der Datei strings.xml).

Ссылка

Versuchen Sie, den Kontext der Anwendung zu verwenden, wenn Sie Ihre Strings wirklich auf diese Weise abrufen möchten, oder nehmen Sie meinen Vorschlag in dem Kommentar zu Ihrer Frage vor.

    
Brandon 14.01.2012, 17:50
quelle
3

Mit Resources.getSystem (). getWhatEver () können Sie nur auf systemweite Ressourcen zugreifen (Sie erhalten den Fehler, da keine systemweite Ressource mit Ihrer ID vorhanden ist). Da die Ressourcen-ID nicht für alle Anwendungen eindeutig ist, müssen Sie die Anwendung beim Zugriff auf eine Ressource bereitstellen. In Android geschieht dies mit Context. Wenn Sie also auf eine Ressource zugreifen wollen, müssen Sie sie so verwenden

%Vor%

Abgesehen davon ist Brandons Kommentar korrekt.

    
Stefan 14.01.2012 17:52
quelle
0

Sie könnten den Kontextparameter in der Funktion nach Parameter oder nach einer statischen Variablen oder nach getApplicationContext() function abrufen.

    
Gangnus 14.01.2012 20:48
quelle