Ho due impostazioni internazionali nella mia applicazione. Posso accedere alle risorse, ad esempio array di stringhe da impostazioni internazionali diverse senza modificare le impostazioni locali correnti? Intendo con la codifica non mi piace cambiarlo in Impostazioni.Posso accedere alle risorse da diverse versioni Android?
risposta
Sì, è possibile. Devi creare un nuovo oggetto Resources
specificando l'intenzione Configuration
.
Ecco il codice che funziona per me se Cmk è String matrice da locale corrente e il CEN è array di stringhe da locale differente
cMK = getResources().getStringArray(R.array.cities);
Configuration confTmp =new Configuration(getResources().getConfiguration());
confTmp.locale = new Locale("en");
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Resources resources = new Resources(getAssets(), metrics, confTmp);
/* get localized string */
cENG = getResources().getStringArray(R.array.cities);
locale corrente non viene modificato e questo era il punto.
In Java 7 (e quindi non androide) Locale può essere impostato in modo diverso per le risorse di formato e diverso per una visualizzazione:
Locale.setDefault(DISPLAY, Locale.PL);
Locale.setDefault(FORMAT, Locale.US);
filetto simili: Changing Locale within the app itself.
La soluzione migliore sarebbe (se siete su API 17):
@NonNull
protected String getEnglishString() {
Configuration configuration = getEnglishConfiguration();
return getContext().createConfigurationContext(configuration).getResources().getString(message);
}
@NonNull
private Configuration getEnglishConfiguration() {
Configuration configuration = new Configuration(getContext().getResources().getConfiguration());
configuration.setLocale(new Locale("en"));
return configuration;
}
Ottima risposta, grazie. Vorrei poter eseguire il backup di questo e risparmiare lo sforzo di fare scherzi con il 'AssetManager' – brandall
Grazie! Questa è anche la soluzione consigliata da Google: https://code.google.com/p/android/issues/detail?id=67672 – phreakhead
- 1. Qt come accedere alle risorse
- 2. Risorse menu Android diverse
- 3. come accedere alle risorse estraibili per nome in android
- 4. come accedere alle risorse in un progetto di libreria Android
- 5. Come accedere alle risorse nel file JAR?
- 6. Ottenere l'accesso alle risorse da un ArrayAdapter in Android
- 7. Come posso accedere alle risorse raw nei progetti di test Android?
- 8. Usa icone diverse con versioni di Android SDK diverse
- 9. Come accedere alle stringhe di risorse da ToString di enum in Android?
- 10. Accesso alle risorse Gradle da Java
- 11. accedere alle impostazioni NotificationListenerService Android
- 12. Come accedere alle risorse esterne dal sito Web Aspx
- 13. Come si deve accedere alle risorse in un vaso compilato?
- 14. Come posso accedere alle variabili da un'altra classe?
- 15. Posso accedere alle variabili da un altro file?
- 16. Android & Eclipse 2 diverse versioni della stessa app
- 17. Accedere alle risorse in un altro bundle di osgi?
- 18. Android: Come accedere alla cartella delle risorse da un'altra applicazione Android
- 19. Dare argomenti alle risorse di risorse obiettivo da eclissi
- 20. Programmare layout diversi per le diverse versioni in Android
- 21. Grafico delle versioni SWF alle versioni Flash
- 22. Tema diverso per le diverse versioni di Android SDK
- 23. Android: accesso alle risorse senza attività o refeerence del contesto
- 24. Accesso alle risorse in un progetto di prova Android
- 25. Accesso alle risorse JAR
- 26. Come accedere alle enumerazioni Java da Scala?
- 27. Differenza sul rendering delle immagini su diverse versioni di Android
- 28. Avere dipendenze diverse nelle versioni di valutazione?
- 29. Come posso accedere alle opzioni specifiche del server in Capistrano?
- 30. Un'app Android può avere versioni diverse per dispositivi diversi contemporaneamente?
+1 per il codice! –
intendevi: "cENG = resources.getStringArray (R.array.cities);" ? – xVir
Modifica le impostazioni locali per il contesto (ad esempio per la tua attività) –