0

我有一堆按钮要听。每个按钮增加或减少 EditText 中的一个值。由于每个 Button 都会更改不同的 EditText,因此我只需要切换即可。有相当多的按钮。一些按钮做同样的事情,除了它们根据用户偏好被隐藏。对于 XML 中的每个按钮,我当然都做了 android:onClick="plusEditTexts" 或 android:onClick="minEditTexts"。

public void plusEditTexts(View v) {
    switch(v.getId()) {
        case R.id.firstButton1Inc:
        case R.id.secondButton1Inc:
        // EditText1++
        break;
        case R.id.firstButton2Dec:
        case R.id.secondButton2Dec:
        // EditText2++
        break;
        ...
    }
}

public void minEditTexts(View v) {
    switch(v.getId()) {
        case R.id.firstButton1Inc:
        case R.id.secondButton1Inc:
        // EditText1--
        break;
        case R.id.firstButton2Dec:
        case R.id.secondButton2Dec:
        // EditText2--
        break;
        ...
    }
}

我想知道这是否是最好的方法?有相当多的按钮。所以 switch 语句变得很大。

干杯,

大安

4

1 回答 1

1

您可以使用要修改的设置tag按钮的属性。然后,您可以像这样检索资源 id的 int 值。-idTextViewTextView

int textResId = getResources().getIdentifier(v.getTag().toString(), "id", getPackageName());

摆脱整个案例句子,所以你的代码看起来像.-

public void plusEditTexts(View v) {
    int textResId = getResources().getIdentifier(v.getTag().toString(), "id", getPackageName());
    EditText editText = (EditText) findViewById(textResId);
    // Do your EditText stuff
}

public void minEditTexts(View v) {
    int textResId = getResources().getIdentifier(v.getTag().toString(), "id", getPackageName());
    EditText editText = (EditText) findViewById(textResId);
    // Do your EditText stuff
}
于 2013-04-14T10:16:30.343 回答