查看以下代码段:
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v==yes_button) {
//Toast.makeText(this, "All records have been deleted!", Toast.LENGTH_LONG).show();
db.open();
db.deleteAll();
db.close();
Intent intent = new Intent(this, home_screen_activity.class);
startActivity(intent); }
else if (v==no_button){
Intent intent = new Intent(this, home_screen_activity.class);
startActivity(intent); }
}
}
由于某种原因,else if部分被忽略并且代码运行就好像它不存在一样,所以即使单击no按钮,数据库仍然被删除。它一定是我想念的简单东西,但我似乎无法把它钉死。有人有主意吗?
感谢大家的投入,但我通过重命名no_button解决了问题。奇怪的。
答案 0 :(得分:1)
由于v
是一个对象而不是一个基本类型,==
比较会比较内存中的对象位置,而不是测试相等性。相反,您需要修改测试以使用.equals
方法:
if (v.equals(yes_button)) {
...
} else {
}
另外,如果真的只有两种选择,你可以,如上所述,省略一项测试,看看印刷机是否在“否”按钮上。
答案 1 :(得分:0)
在android中,我通常会通过R.id.
@Override
public void onClick(View v) {
int viewID = v.getId();
if (viewID == R.id.yes_button) {
} else if (newID == R.id.no_button) {