条件陈述被忽视

时间:2014-01-12 19:08:28

标签: java eclipse

查看以下代码段:

@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解决了问题。奇怪的。

2 个答案:

答案 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) {