[英]Android use booleans correctly
我目前在Android中使用booleans
時遇到一個奇怪的問題。 我首先定義了布爾值,但是當我使用它時,它不會返回正確的值。 采取以下代碼:
public class Prompt3 extends Activity {
boolean item1connect;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prompt3);
touchLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
if (Math.abs(startcoordinatesX - itemvar1x)<touchAllowance && Math.abs(startcoordinatesY - itemvar1y)<touchAllowance) {
item1connect = true;
}
if (item1connect = true) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard));
}
}
}
});
}
當我執行上述操作時, indic1.setBackground
將設置setBackground
,而不管是否(Math.abs(startcoordinatesX - itemvar1x)<touchAllowance && Math.abs(startcoordinatesY - itemvar1y)<touchAllowance)
。 但是,當我嘗試
if (Math.abs(startcoordinatesX - itemvar1x)<touchAllowance && Math.abs(startcoordinatesY - itemvar1y)<touchAllowance) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard);
}
並完全繞過boolean
item1connect
,代碼工作正常。 包含boolean
時,如何解決此問題?
提前致謝
你寫了
if (item1connect = true) {...}
這是一項分配,而不是比較。 該賦值的返回值為true
因此看起來不起作用。 寫吧
if (item1connect == true) {...}
甚至,甚至
if (item1connect) {...}
您正在執行的操作是告訴itemiconnect將其值設置為true
。 使用==
運算符比較項目是對還是錯,或者只是將itemiconnect
放在括號中,它將為您檢查。
編輯:您的代碼說
if (item1connect = true) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard));
}
您可以將其更改為比較器
if (item1connect == true) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard));
}
或更好,但僅使用隱含的真實功能
if (item1connect) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard));
}
Java允許您在“ if”語句中簡單地調用布爾值,因為它表示一個真值或假值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.