当我的应用第一次启动时,我想检测用户的当前区域设置并相应地设置SharedPreference。我正在从getResources()中获取用户当前的语言环境,我已经明白,当应用程序第一次启动时会设置该语言环境:
// Set the locale
Locale locale = getResources().getConfiguration().locale;
if(locale != Locale.US)
{
Log.i("ActivityDownloader", "Locale: " + locale.toString() + ", (" + Locale.US.toString() + ")");
}
不幸的是,我在控制台中看到了带有以下文本的日志条目:
I / ActivityDownloader:Locale:en_US,(en_US)
为什么两个Locale不匹配?我应该匹配Locale.toString()吗?
答案 0 :(得分:1)
您需要使用equals()
方法。 ==
和!=
运算符不适用于此。
Locale locale = getResources().getConfiguration().locale;
if(!locale.equals(Locale.US))
{
Log.i("ActivityDownloader", "Locale: " + locale.toString() + ", (" + Locale.US.toString() + ")");
}
我认为这是因为==
和!=
会比较引用而不是值。见https://stackoverflow.com/a/767379/935779