我已經嘗試了很多不同的手段來達到我想要的效果,但是沒有什麼能夠讓這些按鈕做到他們應該做的......基本上我有14個按鈕。四與文本「X」,digitOne,digitTwo,digitThree和digitFour。然後,有10個包含「1」,「2」等,名爲「one」,「two」等。所有按鈕綁定到相同的OnClickListener,它將使用switch語句確定哪個按鈕被按下,然後找到最快的顯示按鈕(最初標記爲「X」的按鈕),並將該按鈕文本更改爲輸入的數字。我想要發生的是:非匿名私人OnClickListener類中的Switch語句不工作?
說別人點擊「5」按鈕。如果按下第一個按鈕,則第一個「數字」按鈕將從顯示「X」變爲「5」,以此類推,以此類推。這不是正在發生的事情......事實上,無論我嘗試過什麼,都沒有發生。甚至沒有錯誤......一個錯誤會很好,至少我會知道我的邏輯缺陷在哪裏。下面的代碼:
按鈕聲明:
one=(Button)findViewById(R.id.button1);
two=(Button)findViewById(R.id.Button2);
three=(Button)findViewById(R.id.Button3);
four=(Button)findViewById(R.id.Button4);
five=(Button)findViewById(R.id.Button5);
six=(Button)findViewById(R.id.Button6);
seven=(Button)findViewById(R.id.Button7);
eight=(Button)findViewById(R.id.Button8);
nine=(Button)findViewById(R.id.Button9);
zero=(Button)findViewById(R.id.Button0);
add=(Button)findViewById(R.id.buttonAdd);
digitOne=(Button)findViewById(R.id.Number1);
digitTwo=(Button)findViewById(R.id.Number2);
digitThree=(Button)findViewById(R.id.Number3);
digitFour=(Button)findViewById(R.id.Number4);
one.setOnClickListener(listener);
two.setOnClickListener(listener);
three.setOnClickListener(listener);
four.setOnClickListener(listener);
five.setOnClickListener(listener);
six.setOnClickListener(listener);
seven.setOnClickListener(listener);
eight.setOnClickListener(listener);
nine.setOnClickListener(listener);
zero.setOnClickListener(listener);
的OnClickListener私有內部類(我想這是你叫什麼這是Activity類裏面。):
private OnClickListener listener = new OnClickListener(){
public void onClick(View button) {
switch(button.getId()){
case R.id.Button0:
addANumber(0);
break;
case R.id.button1:
addANumber(1);
break;
case R.id.Button2:
addANumber(2);
break;
case R.id.Button3:
addANumber(3);
break;
case R.id.Button4:
addANumber(4);
break;
case R.id.Button5:
addANumber(5);
break;
case R.id.Button6:
addANumber(6);
break;
case R.id.Button7:
addANumber(7);
break;
case R.id.Button8:
addANumber(8);
break;
case R.id.Button9:
addANumber(9);
break;
}
}
};
最後,「addANumber」方法被稱爲:
public void addANumber(int i){
if(digitOne.getText()=="X"){
digitOne.setText(i);
}else if(digitTwo.getText()=="X"){
digitTwo.setText(i);
}else if(digitThree.getText()=="X"){
digitThree.setText(i);
}else if(digitFour.getText()=="X"){
digitFour.setText(i);
}
}
我以前做過這個......我知道W I失去了一些東西如此明目張膽愚蠢的,值得在頭一巴掌......
我覺得比較'String'應該使用'.equals()'儀式? – Sieryuu
試試這個,從==改成equals。如果(digitOne.gettext()。equals(「X」)等等),這也有助於使用Log來查看你的代碼到達的位置,它甚至調用addANumber() ? – nedaRM
無法完全理解你的問題,你控制進入onClick,然後切換大小寫不工作?或者你的onClick只是不被調用? – Sushil