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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 933 - (hide annotations) (download)
Sun Jun 27 18:52:46 2010 UTC (13 years, 11 months ago) by torben
File size: 3931 byte(s)
Bugfix
1 torben 931 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 torben 933 mClear = false;
77 torben 931 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