val*_*lll 6 android locale localization
我希望根据用户的喜好设置应用程序语言,但到目前为止我的工作方式并不合适.
我已经设置了默认值:strings.xml以及使用西班牙语中的strings.xml的values-es.我有一个菜单选项,它将用户带到一个Preference活动,在那里他可以选择语言.
以下是代码的一些摘录:
public class Preference extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
......
// Set up a listener whenever a key changes
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
...}
//(......)
//and here I have the listener so when the language pref changes value the locale gets changed.
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("listPref2")) {
String idioma = sharedPreferences.getString("listPref2", "catala");
if ("castella".equals(idioma)) {
idioma = "es_ES";
Locale locale = new Locale(idioma);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getApplicationContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我更改它的语言时,但是当我稍后回来或重新启动模拟器时,语言将返回到默认语言环境en_US,并且应用程序语言将再次更改为默认语言.我该怎么做才能解决这个问题?
我知道我可以获得这个首选项(我可以从我的所有活动中访问)然后每次设置语言环境但我发现它有点重,是不是有办法以更优雅的方式做到这一点?
我想要做的是,如果用户设置语言,那么当他2天后回来时,他不必再次更改语言.
有任何想法吗?
val*_*lll 11
好吧,它可以帮助某人.我已将以下内容添加到主要活动清单中:
android:configChanges="locale"
然后,当用户选择首选项时,我放置了一个确认按钮,然后此按钮将您带到主要活动,这就是为什么lnagages被重置.
我有一个静态类,我有这个代码来更改语言环境:
public static void updateLanguage(Context context, String idioma) {
if (!"".equals(idioma)) {
if ("castella".equals(idioma)) {
idioma = "es_ES";
} else if ("catala".equals(idioma)) {
idioma = "ca_ES";
}
Locale locale = new Locale(idioma);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getResources().updateConfiguration(config, null);
}
}
Run Code Online (Sandbox Code Playgroud)
在每个活动结束时,我喜欢其中的20个,我之前称之为:
setContentView(R.layout.list_event);
使用这些方法,当我旋转屏幕时,活动不会改变语言,这是指向帮助我的博客的链接:http: //adrianvintu.com/blogengine/post/Force-Locale-on-Android.aspx
| 归档时间: |
|
| 查看次数: |
15770 次 |
| 最近记录: |