zu bespannen foo in strings.xml (in res \ Werte) eines app Projekt zu beziehen, man einfachWie wird eine Zeichenfolge in strings.xml einer Android-Bibliothek in Code referenziert?
getString(R.string.foo)
getString Verfahren zum Context ist nutzen können.
Angenommen, eine Android-Bibliothek enthält in ihrer Datei strings.xml eine Zeichenfolge foo. Wie kann es in einer Methode der Bibliothek verwendet werden?
Bearbeitet: Es wurde vorgeschlagen, eine Referenz von Context an die Bibliotheksmethode zu übergeben, damit getString() verwendet werden kann. Da es sich um einen Kontext des Projekts einer App handelt, gibt es einen potenziellen Konflikt, der wie folgt veranschaulicht werden kann:
Angenommen: Die Bibliothek verfügt über eine Zeichenfolge foo mit Wert = "Bibliothek foo". Eine App Projekt hat eine Zeichenfolge foo mit value = "app foo"
Der folgende Code
Log.d("Debug", "App foo ID: " + R.string.foo);
Log.d("Debug", "App: foo value: " + getString(R.string.foo));
erzeugt:
03-22 05:53:55.590: D/Debug(16719): App foo ID: 2131230723
03-22 05:53:55.590: D/Debug(16719): App foo value: app foo
In einer Bibliothek Verfahrens wird der folgende Code
Log.d("Debug", "Library foo ID: " + R.string.foo);
Log.d("Debug", "Library foo value: " + context.getString(com.my.library.R.string.foo));
generiert:
03-22 05:55:03.680: D/Debug(16719): Library foo ID: 2131230723
03-22 05:55:03.680: D/Debug(16719): Library foo value: app foo
Das obige zeigt den ID-Konflikt daher fehlerhaften String-Wert.
Das Verfahren, das keinen Kontextbezug haben, wie kann getString() verwendet werden? – Hong
Der einzige Weg ist mit einem Kontext. Normalerweise richte ich meine Methode ein, um einen Kontext von der aufrufenden Anwendung zu akzeptieren. – DDRBoxman
müssen Sie einen 'Context' Parameter an Ihre Methode übergeben. Beachten Sie, dass 'View' eine 'getContext()' Methode hat, wenn Sie bereits einen Parameter dieses Typs haben – nicopico