如何使用新语言刷新主屏幕?

时间:2016-12-23 23:49:10

标签: android

我有一个带有主屏幕的Android应用程序以及各种按钮和控件,可以让用户进行其他活动。其中一个活动可以允许用户切换到另一个区域设置。 (最终会有很多其他语言环境)。当用户设置区域设置时,它会存储在非易失性存储中,以便下次应用启动时记住它。

我有资源文件夹,每个文件都有自己的 strings.xml 文件,因此主屏幕的按钮和标签是从当前语言的资源文件中填充的。我在做 setContentView()之前就设置了它。 。 。

readPrefs();  // populate class variables from n.v. storage
// set the current locale...
Resources res = this.getResources();
Configuration conf = res.getConfiguration();
conf.locale = new Locale(MyApp.locale);   //new Locale(locale);
res.updateConfiguration(conf, res.getDisplayMetrics());
// inflate the main view (it will use the locale set above) ...
setContentView(R.layout.main);

当用户选择新的语言环境时,他的选择将从下拉列表中读取并存储在变量(此示例代码中的“MyApp.locale”)以及非易失性存储中。在这个例子中,我只有罗马尼亚语和英语)。 。 。

localeSpinner = (Spinner)findViewById(R.id.spCountries);
String locale = localeSpinner.getSelectedItem().toString();
if (locale.equals("Romanian"))  {
    MyApp.locale = "RO";
}
else  {
    MyApp.locale = "EN";
}
    savePrefs();    //Commit params to storage

...这样可以正常工作,因为主屏幕只在首次启动该活动时被绘制一次并且我执行了 setContentView(),没有什么可以强迫它使用新语言的strings.xml重新 -drawn。

是否有强制它使用新的区域设置刷新或重新膨胀主要活动的屏幕?

0 个答案:

没有答案