/[projects]/android/Calculator/src/dk/thoerup/calculator/CalculatorActivity.java
ViewVC logotype

Contents of /android/Calculator/src/dk/thoerup/calculator/CalculatorActivity.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 933 - (show annotations) (download)
Sun Jun 27 18:52:46 2010 UTC (13 years, 10 months ago) by torben
File size: 3931 byte(s)
Bugfix
1 package dk.thoerup.calculator;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.text.Editable;
6 import android.view.View;
7 import android.widget.EditText;
8
9 public class CalculatorActivity extends Activity {
10 /** Called when the activity is first created. */
11
12 EditText mEdit;
13
14
15 double mVal1;
16 char mOperation = ' ';
17 boolean mClear = false;
18
19 @Override
20 public void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);
22 setContentView(R.layout.main);
23
24 findViewById(R.id.btn0).setOnClickListener( new NumericClick('0') );
25 findViewById(R.id.btn1).setOnClickListener( new NumericClick('1') );
26 findViewById(R.id.btn2).setOnClickListener( new NumericClick('2') );
27 findViewById(R.id.btn3).setOnClickListener( new NumericClick('3') );
28 findViewById(R.id.btn4).setOnClickListener( new NumericClick('4') );
29 findViewById(R.id.btn5).setOnClickListener( new NumericClick('5') );
30 findViewById(R.id.btn6).setOnClickListener( new NumericClick('6') );
31 findViewById(R.id.btn7).setOnClickListener( new NumericClick('7') );
32 findViewById(R.id.btn8).setOnClickListener( new NumericClick('8') );
33 findViewById(R.id.btn9).setOnClickListener( new NumericClick('9') );
34
35 findViewById(R.id.btnback).setOnClickListener( new BackClick() );
36 findViewById(R.id.btnpoint).setOnClickListener( new PointClick() );
37
38 findViewById(R.id.btnadd).setOnClickListener( new OperationClick('+') );
39 findViewById(R.id.btnsub).setOnClickListener( new OperationClick('-') );
40 findViewById(R.id.btnmul).setOnClickListener( new OperationClick('*') );
41 findViewById(R.id.btndiv).setOnClickListener( new OperationClick('/') );
42
43 findViewById(R.id.btnsum).setOnClickListener( new SumClick() );
44
45 mEdit = (EditText) findViewById(R.id.edit);
46 mEdit.setCursorVisible(false);
47
48
49 }
50
51
52 class NumericClick implements View.OnClickListener {
53 char mNumval;
54
55 public NumericClick(char numval) {
56 mNumval = numval;
57 }
58
59 @Override
60 public void onClick(View v) {
61 Editable tempText = mEdit.getText();
62
63 if (tempText.toString().equals("0") || mClear==true ) {
64 tempText.clear();
65 }
66 tempText.append(mNumval);
67 }
68
69 }
70
71 class BackClick implements View.OnClickListener {
72
73 @Override
74 public void onClick(View v) {
75 if (mClear) {
76 mClear = false;
77 mEdit.setText("0");
78 return;
79 }
80
81 Editable tempText = mEdit.getText();
82 if (tempText.length() > 0) {
83 CharSequence cs = tempText.subSequence(0, tempText.length() -1);
84 mEdit.setText(cs);
85 }
86 }
87 }
88
89 class PointClick implements View.OnClickListener {
90
91 @Override
92 public void onClick(View v) {
93
94 Editable tempText = mEdit.getText();
95 if (tempText.toString().indexOf('.') == -1) {
96 tempText.append('.');
97 }
98 }
99 }
100
101 class OperationClick implements View.OnClickListener {
102 char mOp;
103 public OperationClick(char op) {
104 mOp = op;
105 }
106
107 @Override
108 public void onClick(View v) {
109 mVal1 = Double.parseDouble( mEdit.getText().toString() );
110 mEdit.setText("0");
111
112 mOperation = mOp;
113
114 }
115 }
116
117 class SumClick implements View.OnClickListener {
118 @Override
119 public void onClick(View v) {
120 if (mOperation == ' ') {
121 return;
122 }
123
124 double val2 = Double.parseDouble( mEdit.getText().toString() );
125
126 Double res = 0.0;
127 switch (mOperation) {
128 case '+':
129 res = mVal1 + val2;
130 break;
131 case '-':
132 res = mVal1 - val2;
133 break;
134 case '*':
135 res = mVal1 * val2;
136 break;
137 case '/':
138 res = mVal1 / val2;
139 break;
140 }
141
142 if ( res.isInfinite() || res.isNaN() ) {
143 mClear = true;
144 }
145
146 mEdit.setText( res.toString() );
147 mOperation = ' ';
148 mVal1 = res;
149 }
150 }
151 }

  ViewVC Help
Powered by ViewVC 1.1.20