常用输入输出语句

Common input and output statements

在我的应用程序中,我有两个按钮。我正在输入并根据单击哪个按钮显示输出。但是,为此,我必须在每个按钮的 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 = Double.parseDouble(inputString.getText().toString());

output() 是:outputString.setText(String.valueOf(output));

inputoutputdouble 并且已经定义。

输出是通过简单的算术 process1()process2() 从输入计算得出的。

inputStringEditTextoutputStringTextView

不确定是否值得这么麻烦,但您可以创建一个实现 OnClickListener 的抽象 class BaseListener。它的 onClick 方法如下所示:

public void onClick(View arg1) 
{
    input();
    process();
    output();
}

process() 将是一个抽象方法。

每个 Button 都有一个扩展 BaseListener 并实现 process().

的侦听器

例如:

Button1.setOnClickListener(new BaseListener () {
    protected void process() {
        process1();
    }
});

不是最好的方法,但是你可以提取一个方法:

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);
   }
});

这可以通过多种方式完成...方法是这样的。

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();
    }
};