Я создаю приложение для Android, в котором я установил языковой стандарт для английского языка и языка тамил, когда я нажимаю язык тамила, который отображает строки в tamils, и все отлично работает. Я имею деятельность, которая находится в ландшафтном режиме, когда начать эту деятельность локаль получает изменен с тамил на английском, даже я использовалИсходный код для Android изменяется при изменении ориентации на ландшафт
android:configChanges="locale|orientation|screenSize|keyboardHidden"
в манифесте, но он не работает.
Может ли кто-нибудь сказать мне, как я могу преодолеть эту проблему. У меня есть язык в общем предпочтении.
private static MyApplication mInstance;
public static final String PREF_NAME = "CoconutMetaData";
public static final String PREF_USER_LANGUAGE_KEY = "userLanguage";
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String myLanguage = preferences.getString(PREF_USER_LANGUAGE_KEY,"en");
// Set user specific locale (Language)
Locale mLocale = new Locale(myLanguage);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
conf.setLocale(mLocale);
}
res.updateConfiguration(conf, dm);
/**
* To display overflow menu when hard menu key is pressed (for devices that have hard menu key)
*/
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception ex) {
}
}
public static synchronized MyApplication getInstance() {
return mInstance;
}
public void setConnectivityListener(ConnectivityReceiver.ConnectivityReceiverListener listener) {
ConnectivityReceiver.connectivityReceiverListener = listener;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}