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)

2 つのロケールが一致しないのはなぜですか? 代わりに 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 に答える