0

我已经尝试了很多不同的策略来达到我想要的结果,但是没有什么能让这些按钮做他们应该做的……基本上我有 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);
    }
}

我以前做过这个......我知道我错过了一些如此公然愚蠢的东西,值得一击......

4

1 回答 1

3

首先:

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

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

什么都没有发生,因为==没有任何if条件被评估为空方法trueaddANumber()

于 2013-08-20T01:38:40.537 回答