-1

簡単なチェックを試みています。文字列名のロケールに値として「es」がある場合。

public String locale = 
    Locale.getDefault().getLanguage().toLowerCase().toString();

// ...

Log.v(tag, "Idioma del sistema: «" + locale +"»");
if (locale != "es") {
    showDialog(R.string.warningTitleDialog, 
        "We are sorry that this tool is only available in Spanish " +
        "language. See Author menu item for more information. [" + 
        locale + "]");
    locale = "en";
}

adb logcat文字列「locale」の内容として「es」が表示されますが、条件内のコードが実行されています。

4

2 に答える 2

2

文字列と組み合わせて!=または==を使用しないでください。次のような方法を試してください。

if(locale.equals("es"))

文字列localeと"es"に同じ文字シーケンスが含まれている場合、これはtrueを返します。equals()メソッドはStringオブジェクト内の文字を比較するためです。==演算子は、2つのオブジェクト参照を比較して、それらが同じインスタンスを参照しているかどうかを確認します。

Javaの==とequals()の違いは何ですか?を参照してください。詳細については。

于 2012-09-13T18:57:40.377 に答える
2

問題はAndroidやロジックの問題ではなく、Javaにあるようです。これを試して、何が起こっているのか教えてください

if(!locale.equals("en"))
{
   //Your Code
}
于 2012-09-13T18:47:34.307 に答える