为什么getConfiguraton()。locale匹配locale.US?

时间:2013-08-02 19:11:04

标签: android

当我的应用第一次启动时,我想检测用户的当前区域设置并相应地设置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()吗?

1 个答案:

答案 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