大家好:
刚刚开始学习Android开发,写了一个简单的计算器,主要是为了熟悉界面布局和事件处理。我写的代码很蠢,在一个主Activity中,一个按钮添加一个事件,请问有什么好的模式可以优化一下这种代码,谢谢!
[code="java"]package com.wondershare.calculator;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class Calculator extends Activity {
private String number1 = null;
private String number2 = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText editText = (EditText) findViewById(R.id.editText);
Button del = (Button) findViewById(R.id.del);
del.setOnClickListener(new OnClickListener() {
//有问题
@Override
public void onClick(View v) {
// Editable str = editText.getText();
// if(!str.equals("")){
// int length = str.length();
// str.delete(length-1, length);
// editText.setText(str);
// }
editText.getText().clear();
}
});
final Button digit0 = (Button) findViewById(R.id.digit0);
digit0.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String str = (String) digit0.getText();
if (str.equals("")) {
} else {
editText.append(digit0.getText());
}
}
});
final Button digit1 = (Button) findViewById(R.id.digit1);
digit1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(digit1.getText());
}
});
final Button digit2 = (Button) findViewById(R.id.digit2);
digit2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(digit2.getText());
}
});
final Button digit3 = (Button) findViewById(R.id.digit3);
digit3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(digit3.getText());
}
});
final Button digit4 = (Button) findViewById(R.id.digit4);
digit4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(digit4.getText());
}
});
final Button digit5 = (Button) findViewById(R.id.digit5);
digit5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(digit5.getText());
}
});
final Button digit6 = (Button) findViewById(R.id.digit6);
digit6.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(digit6.getText());
}
});
final Button digit7 = (Button) findViewById(R.id.digit7);
digit7.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(digit7.getText());
}
});
final Button digit8 = (Button) findViewById(R.id.digit8);
digit8.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(digit8.getText());
}
});
final Button digit9 = (Button) findViewById(R.id.digit9);
digit9.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(digit9.getText());
}
});
final Button div = (Button) findViewById(R.id.div);
div.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
number1 = editText.getText().toString();
editText.append(div.getText());
}
});
final Button dot = (Button) findViewById(R.id.dot);
dot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.append(dot.getText());
}
});
final Button equal = (Button) findViewById(R.id.equal);
equal.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String str = editText.getText().toString();//文本
number2 = str.substring(number1.length()+1, str.length());
String operation = str.substring(number1.length(), number1.length()+1);
float result = 0;
if(operation.equals("+")){
result = Float.parseFloat(number1)+Float.parseFloat(number2);
}else if(operation.equals("-")){
result = Float.parseFloat(number1)-Float.parseFloat(number2);
}else if(operation.equals("×")){
result = Float.parseFloat(number1)*Float.parseFloat(number2);
}else if(operation.equals("/")){
result = Float.parseFloat(number1)/Float.parseFloat(number2);
}
editText.setText(String.valueOf(result));
}
});
final Button minus = (Button) findViewById(R.id.minus);
minus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
number1 = editText.getText().toString();
editText.append(minus.getText());
}
});
final Button mul = (Button) findViewById(R.id.mul);
mul.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
number1 = editText.getText().toString();
editText.append(mul.getText());
}
});
final Button plus = (Button) findViewById(R.id.plus);
plus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//保存第一个操作数
number1 = editText.getText().toString();
editText.append(plus.getText());
}
});
}
}[/code]