/[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 935 - (hide annotations) (download)
Mon Jun 28 08:52:48 2010 UTC (13 years, 11 months ago) by torben
File size: 3949 byte(s)
remember to reset clear state var
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 torben 935 mClear=false;
65 torben 931 tempText.clear();
66     }
67     tempText.append(mNumval);
68     }
69    
70     }
71    
72     class BackClick implements View.OnClickListener {
73    
74     @Override
75     public void onClick(View v) {
76     if (mClear) {
77 torben 933 mClear = false;
78 torben 931 mEdit.setText("0");
79     return;
80     }
81    
82     Editable tempText = mEdit.getText();
83     if (tempText.length() > 0) {
84     CharSequence cs = tempText.subSequence(0, tempText.length() -1);
85     mEdit.setText(cs);
86     }
87     }
88     }
89    
90     class PointClick implements View.OnClickListener {
91    
92     @Override
93     public void onClick(View v) {
94    
95     Editable tempText = mEdit.getText();
96     if (tempText.toString().indexOf('.') == -1) {
97     tempText.append('.');
98     }
99     }
100     }
101    
102     class OperationClick implements View.OnClickListener {
103     char mOp;
104     public OperationClick(char op) {
105     mOp = op;
106     }
107    
108     @Override
109     public void onClick(View v) {
110     mVal1 = Double.parseDouble( mEdit.getText().toString() );
111     mEdit.setText("0");
112    
113     mOperation = mOp;
114    
115     }
116     }
117    
118     class SumClick implements View.OnClickListener {
119     @Override
120     public void onClick(View v) {
121     if (mOperation == ' ') {
122     return;
123     }
124    
125     double val2 = Double.parseDouble( mEdit.getText().toString() );
126    
127     Double res = 0.0;
128     switch (mOperation) {
129     case '+':
130     res = mVal1 + val2;
131     break;
132     case '-':
133     res = mVal1 - val2;
134     break;
135     case '*':
136     res = mVal1 * val2;
137     break;
138     case '/':
139     res = mVal1 / val2;
140     break;
141     }
142    
143     if ( res.isInfinite() || res.isNaN() ) {
144     mClear = true;
145     }
146    
147     mEdit.setText( res.toString() );
148     mOperation = ' ';
149     mVal1 = res;
150     }
151     }
152     }

  ViewVC Help
Powered by ViewVC 1.1.20