1
英語とタミール語のロケールを設定したアンドロイドアプリケーションを作成しています。タミル語をクリックするとタミル文字列が表示され、でも私はマニフェストで向きが横向きに変更されたときに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);
}