在我的应用程序中,我有两个按钮。我正在输入并根据单击的按钮显示输出。但是,为此,我必须在每个按钮的OnClickListener()中编写输入和输出语句。这使得代码变得笨重。有什么办法可以编写常见的输入和输出语句。
我当前的代码看起来像这样。
Button1.setOnClickListener(new View.onClickListener() {
public void onClick(View arg0) {
input();
process1();
output();
}
});
Button2.setOnClickListener(new View.onClickListener() {
public void onClick(View arg1) {
input();
process2();
output();
}
});
我希望我的代码是这样的:
input();
Button1.setOnClickListener(new View.onClickListener() {
public void onClick(View arg0) {
process1();
}
});
Button2.setOnClickListener(new View.onClickListener() {
public void onClick(View arg1) {
process2();
}
});
output();
这可能吗?如果是,那怎么样?如果不是那么为什么?
谢谢!
修改:
input()是:input = Double.parseDouble(inputString.getText().toString());
output()是:outputString.setText(String.valueOf(output));
input
和output
已double
并已定义。
输出是通过简单的算术process1()
和process2()
从输入计算得出的。
inputString
为EditText
,outputString
为TextView
。
答案 0 :(得分:1)
不确定是否值得这么麻烦,但您可以创建一个实现BaseListener
的抽象类OnClickListener
。它的onClick
方法看起来像这样:
public void onClick(View arg1)
{
input();
process();
output();
}
process()
将是一种抽象方法。
每个Button都有一个扩展BaseListener
并实现process()
的侦听器。
例如:
Button1.setOnClickListener(new BaseListener () {
protected void process() {
process1();
}
});
答案 1 :(得分:0)
不是最好的方法,但你可以提取一个方法:
void process(int btn) {
input();
if(btn == 1) process1();
else if (btn == 2) process2();
output();
}
并以这种方式称呼它:
Button1.setOnClickListener(new View.onClickListener() {
public void onClick(View arg0) {
process(1);
}
});
Button2.setOnClickListener(new View.onClickListener() {
public void onClick(View arg1) {
process(2);
}
});
答案 2 :(得分:0)
这可以通过多种方式完成......就像这样。
Button1.setOnClickListener(onClickListener);
Button2.setOnClickListener(onClickListener);
View.OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View view) {
input();
switch (view.getId()) {
case R.id.button1:
process1();
output();
break;
case R.id.button2:
process2();
break;
}
output();
}
};