使用switch语句onClick将字符添加到EditText

时间:2014-01-01 22:03:01

标签: java android onclick switch-statement

我试图通过提高效率来减少代码量

我想实现一个switch语句而不是long if语句 这是我开始创建的开关

public void onClick(View v) {
    switch(v.getId()){
        case R.id.buttonA:
            displayLetters(v);
            break;
        case R.id.buttonB:
            displayLetters(v);
            break;

这是我想要每个案例运行的displayLetters方法

private void displayLetters(View v) {
    NewDisplayWord = EditText.getText().toString();
    NewDisplayWord = NewDisplayWord + v.getTag();
    EditText.setText(NewDisplayWord);
}

然而,当我按下按钮时,不是在textedit中显示A或B,而是当按下任何按钮时,我得到null

2 个答案:

答案 0 :(得分:2)

您似乎正在尝试通过EditTextEditText.getText()获取文字。我认为您的意思是使用传递给v的{​​{1}}变量。你可以这样做:

displayLetters()

如果private void displayLetters(View v) { NewDisplayWord = ((EditText)v).getText().toString(); NewDisplayWord = NewDisplayWord + v.getTag();// I do not know what is the use of `getTag()` here... ((EditText)v).setText(NewDisplayWord); } 仅处理displayLetters(),您可以将其参数设为EditText

答案 1 :(得分:1)

首先,让我们将displayLetters更改为接受String

private void displayLetters(final String letter) {
    newDisplayWord = editText.getText().toString();
    newDisplayWord = newDisplayWord + letter;

    editText.setText(newDisplayWord);
}

然后使用String param调用displayLetters():

public void onClick(View v) {
    switch(v.getId()){
        case R.id.buttonA:
            displayLetters(v.getTag()); 
            break;
        case R.id.buttonB:
            displayLetters(v.getTag());
            break;
        default:
            break;
    }
}

如果你的onClick()监听器只提供按钮,你可以进一步简化它:

@Override
public void onClick(View v) {
    //cast view to button
    Button bt = (Button) v;

    //get text from button
    final String letter = bt.getText().toString();

    //pass it to displayLetters()
    displayLetters(letter);
}

请遵循Java命名约定,即变量名以小写开头。另外,我假设您已正确设置按钮并编辑文本:

    editText = (EditText) findViewById(R.id.editText);

    button = (Button) findViewById(R.id.button);
    button.setOnClickListener(this);