我试图创建一些按钮(数字按钮{0,1,...,9}) 我这样做的方式是:
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(getNumber.getText().toString().length()>=2)
return;
getNumber.setText(getNumber.getText().toString() + "1");
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(getNumber.getText().toString().length()>=2)
return;
getNumber.setText(getNumber.getText().toString() + "2");
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(getNumber.getText().toString().length()>=2)
return;
getNumber.setText(getNumber.getText().toString() + "3");
}
});
and so on ...
有没有更好的方法来做到这一点,并防止写同样的事情?
答案 0 :(得分:3)
您可以通过以下方式使代码更清晰:
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
button5.setOnClickListener(this);
//..
现在:
@Override
public void onClick(View v) {
switch(v.getId()) {
{
case button1:
doSomeTask(getNumber.getText().toString(), "1");
break;
case button2:
doSomeTask(getNumber.getText().toString(), "2");
break;
//...
}
}
现在是doSomeTask()
:
private void doSomeTask(String text, String num) {
if(text.length()>=2)
return;
getNumber.setText(text + num);
}
答案 1 :(得分:2)
您可以使用以下方法:
private void setupButton(int btnId, int num) {
Button btn = (Button) findViewById(btnId)
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(getNumber.getText().toString().length() >= num)
return;
getNumber.setText(getNumber.getText().toString() + num);
}
});
}
我们将按钮资源ID和相应的数字传递给每个按钮的此方法。
答案 2 :(得分:1)
将标记设置为button1.Tag = 1;
button2.Tag = 2;
等每个按钮,依此类推。如果在每个按钮的布局android:tag="1"
中。
来自@oneStepBack
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
button5.setOnClickListener(this);
//..
活动代码:
@Override
public void onClick(View v)
{
doSomeTask(getNumber.getText().toString(), v.getTag());
}
来自oneStepBack的doSomeTask
private void doSomeTask(String text, String num) {
if(text.length()>=2)
return;
getNumber.setText(text + num);
}
这是我遵循的具有相同功能的多个按钮的做法!