我已经尝试了很多不同的策略来实现我想要的结果,但没有任何东西让这些按钮完成它们所处理的......基本上我有14个按钮。四个带有文本“X”,digitOne,digitTwo,digitThree和digitFour。然后,有10个带有“1”,“2”等,名为“one”,“two”等。所有按钮都绑定到同一个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);
}
}
我之前已经这样做了......我知道我错过了一些如此明显愚蠢的东西,值得一试......
答案 0 :(得分:3)
毕竟:
digitOne.getText()=="X"
应为"X".equals(digitOne.getText())
您需要根据内容检查字符串相等性,而不是参考。
没有任何结果,因为==
if
条件未被评估为true
且addANumber()
只是作为空方法结果