我已经尝试了很多不同的策略来达到我想要的结果,但是没有什么能让这些按钮做他们应该做的……基本上我有 14 个按钮。带有文本“X”的四个、digitOne、digitTwo、digitThree 和 digitFour。然后,有 10 个带有“1”、“2”等,命名为“one”、“two”等。所有按钮都绑定到同一个 OnClickListener,该 OnClickListener 将使用 switch 语句来确定按下了哪个按钮,然后找到最快的显示按钮(最初标记为“X”的按钮),然后将该按钮文本更改为输入的数字。我想要发生的是:
假设有人单击“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);
}
}
我以前做过这个......我知道我错过了一些如此公然愚蠢的东西,值得一击......