我在notepadv3教程中实现了radiobuttongroup。 如果字符串输出是“Fehltag”或“Verspaetung”,我想设置一个radiobutton。 它不是完整的源代码。
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/rbtnVerspaetung"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rbtnVerspätung" />
<RadioButton
android:id="@+id/rbtnFehltag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rbtnFehltag" />
</RadioGroup>
的java:
private RadioButton rbtnFehltag;
private RadioButton rbtnVerspaetung;
private void populateFields() {
if (mRowId != null) {
Cursor note = mDbHelper.fetchNote(mRowId);
startManagingCursor(note);
mTitleText.setText(note.getString(
note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));
mBodyText.setText(note.getString(
note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));
mFehlzeitText.setText(note.getString(
note.getColumnIndexOrThrow(NotesDbAdapter.KEY_Time)));
mTest.setText(note.getString(
note.getColumnIndexOrThrow(NotesDbAdapter.KEY_Test)));
String ausgabe;
//returns Verspaetung or Fehltag
ausgabe = note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.KEY_Test));
rbtnFehltag.setChecked(ausgabe == "Verspaetung"); //it doesn't work
//rbtnFehltag.setChecked(true); //this is working but it doesn't peform the task
}
答案 0 :(得分:1)
我不确定我明白你在问什么。但我认为你的问题在于你不能在字符串上使用==运算符。我相信==运算符会比较内存中的字符串位置,而不是字符串的内容。我想如果你用你的代码替换代码的尾端:
String ausgabe;
//returns Fehltag or Verspaetung
ausgabe = note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.KEY_Test));
rbtnFehltag = (RadioButton)findViewById(R.id.rbtnFehltag);
rbtnVerspaetung = (RadioButton)findViewById(R.id.rbtnVerspaetung);
rbtnFehltag.setChecked(ausgabe.equals("Fehltag"));
rbtnVerspaetung.setChecked(ausgabe.equals("Verspaetung"));
字符串实际上是Java中的对象。通常,在比较基元时只应使用==运算符。 ==将比较对象的内存地址。当您需要了解身份而非平等时,这非常有用。但我不认为这就是你要去的地方。
祝你好运。