1

だから私はテキストビューのテキストを文字列に設定するための次のコードですが、アプリを実行してもテキストビューに何も表示されません。誰かが理由を説明できますか?

コード:

public void onItemSelected(AdapterView<?> parent, View view,
    int position, long id) {
    Object poem = parent.getItemAtPosition(position);
    if(poem.toString() == "Tam O Shanter"){
         selectedPoem.setText(getString(R.string.tamO));
    }
}
4

2 に答える 2

4
if (poem.toString() == "Tam O Shanter"){
   selectedPoem.setText(getString(R.string.tamO));
}

値ではなく参照を比較しているため、これは常に false を返します。メソッドを使用する必要がありますequals()

黄金律が 1 つあります。文字列を比較するときはいつでも、equals() が味方になります。

次のようにする必要があります。

if (poem.toString().equals("Tam O Shanter")) { // or equalsIgnoreCase()
   selectedPoem.setText(getString(R.string.tamO));
}
于 2013-03-15T21:31:19.840 に答える
2

私もあなたのコードも書き直します

String poem = (String)parent.getItemAtPosition(position);

2 つの文字列を比較するには、== の代わりに equals を使用することを想定しています

  public void onItemSelected(AdapterView<?> parent, View view,
    int position, long id) {
    String poem = (String)parent.getItemAtPosition(position);
    if(poem.toString().equalsIgnoreCase("Tam O Shanter")){
         selectedPoem.setText(getString(R.string.tamO));
    }
  }
于 2013-03-15T21:33:31.503 に答える