Android 为什么';t getConfiguraton().locale是否与locale.US匹配?

Android 为什么';t getConfiguraton().locale是否与locale.US匹配?,android,Android,当我的应用程序第一次启动时,我想检测用户的当前区域设置并相应地设置SharedReference。我从getResources()获取用户的当前区域设置,我逐渐了解到该区域设置是在应用程序首次启动时设置的: // Set the locale Locale locale = getResources().getConfiguration().locale; if(locale != Locale.US) { Log.i("ActivityDownloader", "Locale: " +

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

您需要使用
equals()
方法。
==
=运算符对此不起作用

Locale locale = getResources().getConfiguration().locale;
if(!locale.equals(Locale.US))
{
    Log.i("ActivityDownloader", "Locale: " + locale.toString() + ", (" + Locale.US.toString() + ")");
}

我相信这是因为
==
=将比较引用而不是值。请参见您需要使用
equals()
方法。
==
=运算符对此不起作用

Locale locale = getResources().getConfiguration().locale;
if(!locale.equals(Locale.US))
{
    Log.i("ActivityDownloader", "Locale: " + locale.toString() + ", (" + Locale.US.toString() + ")");
}
我相信这是因为
==
=将比较引用而不是值。看