Mam dwa ustawienia regionalne w mojej aplikacji. Czy mogę uzyskać dostęp do zasobów, na przykład tablicy ciągów z różnych ustawień narodowych bez zmiany bieżących ustawień narodowych? Mam na myśli, że przy kodowaniu nie lubię tego zmieniać w Ustawieniach.Czy mogę uzyskać dostęp do zasobów z różnych ustawień narodowych Androida?
Odpowiedz
Tak, możesz. Musisz utworzyć nowy obiekt Resources
określający zamierzony Configuration
.
Oto kod, który działa dla mnie, jeśli CMK jest tablicą String z bieżącej lokalizacji i CEN jest tablica ciągów z zaczepienia lokalizacji
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);
Obecny locale nie ulega zmianie i o to chodziło.
W Javie 7 (tak, nie android) Ustawienia regionalne mogą być ustawione inaczej dla zasobów i inna dla formatu ekranu:
Locale.setDefault(DISPLAY, Locale.PL);
Locale.setDefault(FORMAT, Locale.US);
Podobne wątek: Changing Locale within the app itself.
Lepszym rozwiązaniem byłoby (jeśli jesteś na 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;
}
Świetna odpowiedź, dziękuję. Żałuję, że nie mogę tego zrobić ponownie i zaoszczędzić sobie trudu zmierzenia się z "AssetManager" – brandall
Dzięki! Jest to również rozwiązanie zalecane przez Google: https://code.google.com/p/android/issues/detail?id=67672 – phreakhead
- 1. Jak programowo uzyskać dostęp do ustawień urządzenia?
- 2. Slim 3: jak uzyskać dostęp do ustawień?
- 3. Dostęp do zasobów z projektu biblioteki Android?
- 4. Jak uzyskać dostęp do ustawień zrzutu z pozycji Pipeline
- 5. Uzyskaj ciąg znaków z domyślnych ustawień narodowych za pomocą ciągu znaków w określonych ustawieniach narodowych
- 6. mvc3 jquery dyskretne sprawdzanie poprawności ustawień narodowych
- 7. Jak sformatować daty na podstawie ustawień narodowych?
- 8. Przełącznik ustawień narodowych przy logowaniu się do FOSUserBundle
- 9. Jak uzyskać dostęp do listy połączeń Androida?
- 10. Czy mogę uzyskać dostęp do IIdentity z Web API
- 11. Czy mogę uzyskać dostęp do elementu struct/class z szablonu?
- 12. Czy mogę uzyskać dostęp do cookie z Socket.io?
- 13. Jak uzyskać dostęp do zasobów zewnętrznych z witryny Aspx
- 14. Zmiana ustawień narodowych: Wymuś aktywność, aby ponownie załadować zasoby?
- 15. Jak skonfigurować wbudowany pomost, aby uzyskać dostęp do zasobów Jersey?
- 16. Android: Jak uzyskać identyfikator zasobu zasobów Androida
- 17. W jaki sposób uzyskać dostęp do zasobów surowych w projektach testów Androida?
- 18. Jak uzyskać dostęp do zasobów do rysowania (kolorów) w java
- 19. Jak uzyskać dostęp do zasobów w pliku JAR?
- 20. Jak sformatować bieżącą datę dla ustawień narodowych użytkownika?
- 21. Dostęp do zasobów poprzez kodzie w WPF
- 22. jak uzyskać dostęp do pamięci przydzielonej do różnych procesów?
- 23. Jak uzyskać dostęp do zasobów za pomocą interfejsu webowego?
- 24. Dlaczego ustawienie ustawień narodowych nie naprawia tego UnicodeError?
- 25. Jak mogę uzyskać dostęp do indexedDB synchronicznie?
- 26. Paperclip for Rails: Czy mogę uzyskać dostęp do modelu?
- 27. javascript: uzyskać dostęp do obiektów w różnych ramkach?
- 28. Formatowanie adresu na podstawie ustawień narodowych w Androidzie
- 29. Czy mogę uzyskać dostęp do zmiennej w heredoc w Ruby?
- 30. Czy mogę uzyskać dostęp do czegokolwiek w pamięci?
+1 kodu! –
czy miałeś na myśli: "cENG = resources.getStringArray (R.array.cities);" ? – xVir
Zmienia ustawienia regionalne dla kontekstu (na przykład dla Twojej aktywności) –