【发布时间】:2013-12-04 00:38:38
【问题描述】:
我将 isSelected 用于复选框。 调试显示该方法是否被选中返回false nevermind。
来自 xml 的部分:
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Watched"
android:layout_margin="10sp" />
和代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.editmovie);
final DBHandler myMovies = new DBHandler(this);
final EditText edname = (EditText)findViewById(R.id.editText1);
final EditText eddetails = (EditText)findViewById(R.id.editText2);
final EditText edurl = (EditText)findViewById(R.id.editText3);
final CheckBox chwatched = (CheckBox)findViewById(R.id.checkBox1);
Button btn = (Button)findViewById(R.id.button1);
Intent intent = getIntent();
getId = intent.getStringExtra("id");
if (getId != null)
{
Cursor cursor = myMovies.getMovie(getId);
cursor.moveToFirst();
edname.setText(cursor.getString(1));
eddetails.setText(cursor.getString(2));
edurl.setText(cursor.getString(3));
String iswatched = cursor.getString(4);
if ((iswatched.equals("true")
chwatched.setSelected(true);
else
chwatched.setSelected(false);
flag=true;
}
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(EditMovie.this , MainActivity.class);
String name = edname.getText().toString();
String details = eddetails.getText().toString();
String url = edurl.getText().toString();
boolean wt = chwatched.isSelected();
String watched = String.valueOf(wt);
if (flag)
myMovies.updateMovie(new Movie(name, details, url, watched));
else
myMovies.addMovie(new Movie(name, details, url, watched));
startActivity(intent);
}
});
}
}
由于某种原因,wt 总是收到一个 false...
【问题讨论】:
-
if ((iswatched == "true") || (iswatched == "True"))。哎哟。不要使用==比较字符串。使用equals()(在你的情况下equalsIgnoreCase()会更合适)。 -
@ZouZou,我的错,在那之前我使用整数并错过了那部分......我刚刚修好了。