I have an Android application with English strings in values/strings.xml. For each string in that file, I have an entry in values-ja/strings.xml with the Japanese translation of
This is just a theory but you could be leaking a Context. Basically, the old activity might be reporting the string values rather than the newly created on.
A way to test this is:
Are you changing Locale while the application is running? If so, have you properly implemented the various elements of the Activity lifecycle (including onSaveInstanceState()
and onRestoreInstanceState()
)?
According to http://developer.android.com/guide/topics/resources/runtime-changes.html, a change in configuration at runtime should cause the Activity to be destroyed & restarted. It sounds like your app is noticing the new configuration but is not restarting properly (until restarting the whole App, or changing orientation).
Are you doing anything funky in onSaveInstanceState
or onDestroy
?
P.s. If it corrects itself only on certain orientation changes, can you advise if those orientation changes occur on layouts that have different vertical & horizontal layout files?
I faced the same issue.
For me, I was trying to get the string (in the onCreate()
) before importing language settings from shared preferences (done in the onResume()
).