1

当我的应用程序第一次启动时,我想检测用户的当前语言环境并相应地设置 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: 语言环境: en_US, (en_US)

为什么两个 Locale 不匹配?我应该匹配 Locale.toString() 吗?

4

1 回答 1

1

您需要使用该equals()方法。==and!=运算符不会为此工作。

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

于 2013-08-02T19:15:29.770 回答