gpt4 book ai didi

java - 非匿名私有(private) OnClickListener 类中的 Switch 语句不起作用?

转载 作者:行者123 更新时间:2023-12-01 23:38:16 25 4
gpt4 key购买 nike

我尝试了相当多不同的策略来达到我想要的结果,但没有什么能让这些按钮发挥其应有的作用......基本上我有 14 个按钮。四个带有文本“X”、digitOne、digitTwo、digitThree 和 digitalFour。然后,有 10 个带有“1”、“2”等的按钮,命名为“一”、“二”等。所有按钮都绑定(bind)到同一个 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 私有(private)内部类(我猜这就是你所说的。它位于 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);
}
}

我以前这样做过......我知道我错过了一些如此明显愚蠢的东西,值得一记耳光......

最佳答案

首先:

digitOne.getText()=="X" 应为 "X".equals(digitOne.getText())

您需要根据内容而不是引用来检查字符串是否相等。

没有任何反应,因为使用 == 时,您的 if 条件都不会被评估为 trueaddANumber()只是结果为空方法

关于java - 非匿名私有(private) OnClickListener 类中的 Switch 语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18325630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com