2014-01-12 250 views
0

結帳下面的代碼片段:條件語句被忽略

@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); } 


} 

} 

出於某種原因,否則,如果部分被忽略和代碼運行,就好像它不存在,所以即使沒有按鈕被點擊,數據庫仍然被刪除。它一定是我錯過的簡單東西,但我似乎無法把它釘死。有人有主意嗎?

感謝大家的輸入,但我通過重命名no_button解決了問題。奇怪的。

+0

檢查你爲什麼不使用的是兩個獨立的事件處理程序和無按鈕? – beny23

+0

我打算這樣做,但是,在預感中,我重命名了被忽略的代碼段中的按鈕,瞧!有用! :) – user3116503

回答

1

由於v是一個對象而不是原始類型,所以==比較比較內存中的對象位置,而不是測試是否相等。相反,你需要修改你的測試使用.equals方法:

if (v.equals(yes_button)) { 
    ... 
} else { 

} 

此外,如果有真的只有兩個選擇,你可以像我上面,忽略一個測試,看看新聞界對的「沒有「按鈕。

+0

並且不妨提及,使用正確的縮進,並按照java代碼約定.. – nachokk

+0

感謝您的反饋意見。這很奇怪,但是,我在其他活動中使用了完全相同的結構,並且工作正常。另外,我認爲使用「equals」方法來評估字符串? – user3116503

+0

再次感謝,但根據您的建議更改它仍然沒有做任何事情。但是,我確實通過重命名無按鈕來獲取代碼。我不知道它爲什麼現在有效,但它確實如此。 – user3116503

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