更改屏幕方向时如何防止语言更改

时间:2017-10-31 14:11:38

标签: android android-activity config screen-orientation setlocale

在应用程序中,我有三个按钮可以更改应用程序中的语言:

[PL]

setLocale("pl");

[DE]

setLocale("de");

[EN]

setLocale("en");

public void setLocale(String lang) {

    myLocale = new Locale(lang);
    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    Configuration conf = res.getConfiguration();
    conf.locale = myLocale;
    res.updateConfiguration(conf, dm);
    Intent refresh = new Intent(this, MainActivity.class);
    startActivity(refresh);

    this.finish();

}

在一个地方,在我的应用程序中,我将屏幕的方向更改为水平(应用程序中只有一个活动)。这就是问题所在。更改屏幕方向会将语言更改为手机中的默认设置。 我试图在AndroidManifest文件中添加以下条目 - 但它不起作用。

<activity android:name=".MainActivity"

    android:configChanges="orientation|keyboardHidden">

搜索SO也没有给出任何结果 我将非常感谢帮助解决这个问题。 问候 马尔钦

1 个答案:

答案 0 :(得分:0)

请存储您要在永久存储类型中使用的Locale,并将其恢复到onCreate。您甚至可以使用一段代码将区域设置重置为onStop中的默认值,如果您希望它保持方向更改而不是应用重启!

例如,您可以将Locale存储在SharedPreferences中,以及应用程序的所有其他配置数据。如果您不了解SharedPreferences,Google上有很多教程!