0
我的android应用程序依赖于某些库在将手机语言更改为某种阿拉伯语言时出现错误行为。所以我希望我的应用程序区域设置保持locale.US。对于这一点,我搜索,发现在MainApplication下面的代码:如何将android应用的区域设置保持为locale.US?
public class MyApplication extends Application
{
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
Locale.setDefault(Locale.US);
newConfig.locale = Locale.US;
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
@Override
public void onCreate()
{
locale = Locale.US;
Locale.setDefault(locale);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
}
此代码创建Android上的L.问题,当我改变手机阿拉伯语语言,onConfigurationChanged
函数被调用单次,但活动在打开应用程序后不断创建。它看起来像是在一个循环中创建。所以,
- 我可以使用
Locale.setDefault(Locale.US)
而不使用getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
,因为它工作正常。 - 是否有任何其他方式来指定Android应用程序的区域设置。
嗨@Neverover,我尝试了'super.onConfigurationChanged(newConfig);'计算后,但仍然无限'onCreate'问题即将到来。由于行getBaseContext()。getResources()。updateConfiguration(newConfig,getBaseContext()。getResources()。getDisplayMetrics());'...因此,当我删除该行,只保留'Locale。 setDefault(Locale.US)'一切工作正常。但我不确定它是否适用于Android的每个版本。另外,为什么每个答案都有它,请参阅:http://stackoverflow.com/questions/2264874/changing-locale-within-the-app-itself, – user2436032