非匿名私有OnClickListener类中的switch语句不起作用?

时间:2013-08-20 01:32:13

标签: java android onclicklistener

我已经尝试了很多不同的策略来实现我想要的结果,但没有任何东西让这些按钮完成它们所处理的......基本上我有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);
    }
}

我之前已经这样做了......我知道我错过了一些如此明显愚蠢的东西,值得一试......

1 个答案:

答案 0 :(得分:3)

毕竟:

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

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

没有任何结果,因为== if条件未被评估为trueaddANumber()只是作为空方法结果