Per riferimento stringa pippo a strings.xml (in valori \ res) di un progetto di app, si può semplicemente utilizzareCome fare riferimento a una stringa in stringhe.xml di una libreria Android nel codice?
getString(R.string.foo)
getString è un metodo di contesto.
Supponiamo che una libreria Android abbia una stringa foo nel suo strings.xml. Come può essere usato in un metodo della biblioteca?
Modificato: È stato suggerito di passare un riferimento di Context al metodo della libreria in modo da poter utilizzare getString(). Poiché si tratta di un contesto di un progetto di app, esiste un potenziale conflitto che può essere illustrato come segue:
Supponiamo: La libreria ha una stringa foo con value = "libreria foo". Un progetto app ha un foo stringa con value = "app foo"
il seguente codice
Log.d("Debug", "App foo ID: " + R.string.foo);
Log.d("Debug", "App: foo value: " + getString(R.string.foo));
genera:
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 un metodo biblioteca, il seguente codice
Log.d("Debug", "Library foo ID: " + R.string.foo);
Log.d("Debug", "Library foo value: " + context.getString(com.my.library.R.string.foo));
genera:
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
Quanto sopra mostra il conflitto di ID quindi valore di stringa errato.
Il metodo non ha un riferimento al contesto, come può getString() utilizzabile? – Hong
L'unico modo è con un contesto. Di solito ho appena impostato il mio metodo per accettare un contesto dall'applicazione chiamante. – DDRBoxman
devi passare un parametro 'Context' al tuo metodo. Nota che 'View' ha un metodo' getContext() ', se hai già un parametro di questo tipo – nicopico