मैं एक गतिविधि है और onCreate में मैं वरीयताओं से भाषा लोड और इस तरह एक स्थान सेट:एंड्रॉयड स्थान बेतरतीब ढंग से वापस बदल जाता है डिफ़ॉल्ट
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String lang = PreferenceManager.getDefaultSharedPreferences(this).getString("locale", "en");
Locale newLocale = new Locale(lang);
Locale.setDefault(newLocale);
Configuration config = new Configuration();
config.locale = newLocale;
final Resources res = getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
}
मैं भी ओवरराइड onConfigurationChanged
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
String lang = PreferenceManager.getDefaultSharedPreferences(this).getString("locale", "en");
Locale newLocale = new Locale(lang);
Locale.setDefault(newLocale);
Configuration config = new Configuration();
config.locale = newLocale;
final Resources res = getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
}
मैं एक है FragmentPagerAdapter के साथ ViewPager और एंड्रॉइड 2.3.7 पर तीन टैब। समस्या यह है कि कभी-कभी टैब को स्विच करते समय ऐप का लोकेल वापस अंग्रेजी में वापस आ जाता है, इसलिए यूआई में अब से मिश्रित भाषाएं हैं। मैं हमेशा एडाप्टर की getItem() विधि में टैब के लिए नए टुकड़े बनाते हैं। अगर मैं डिवाइस को घुमाता हूं तो लोकेल फिर से सही होता है।
मैंने एंड्रॉइड डालने की कोशिश की: configChanges = "लोकेल" मैनिफेस्ट में और कॉन्फ़िगरेशन पर ओवरराइड नहीं किया गया(), लेकिन परिणाम वही है।
सबसे बुरी बात यह है कि यह 100% पुनरुत्पादित नहीं है, यह केवल कुछ बार होता है और मेरे पास इसके बारे में उपयोगकर्ताओं से भी रिपोर्ट होती है। एक बार एप्लिकेशन शुरू होने के बाद और यह कुछ टैब स्विच करने के बाद लोकेल को नहीं बदलता है, तो यह बाहर निकलने तक सही ढंग से ठीक होगा।