A Simple Android Application For Simple Calculator
Open main.xml and draw the screen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| <? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "vertical" android:layout_width = "fill_parent" android:layout_height = "fill_parent" > < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:id = "@+id/linearLayout1" android:layout_marginLeft = "10pt" android:layout_marginRight = "10pt" android:layout_marginTop = "3pt" > < EditText android:layout_weight = "1" android:layout_height = "wrap_content" android:layout_marginRight = "5pt" android:id = "@+id/etNum1" android:layout_width = "match_parent" android:inputType = "numberDecimal" > </ EditText > < EditText android:layout_height = "wrap_content" android:layout_weight = "1" android:layout_marginLeft = "5pt" android:id = "@+id/etNum2" android:layout_width = "match_parent" android:inputType = "numberDecimal" > </ EditText > </ LinearLayout > < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:id = "@+id/linearLayout2" android:layout_marginTop = "3pt" android:layout_marginLeft = "5pt" android:layout_marginRight = "5pt" > < Button android:layout_height = "wrap_content" android:layout_width = "match_parent" android:layout_weight = "1" android:text = "+" android:textSize = "8pt" android:id = "@+id/btnAdd" > </ Button > < Button android:layout_height = "wrap_content" android:layout_width = "match_parent" android:layout_weight = "1" android:text = "-" android:textSize = "8pt" android:id = "@+id/btnSub" > </ Button > < Button android:layout_height = "wrap_content" android:layout_width = "match_parent" android:layout_weight = "1" android:text = "*" android:textSize = "8pt" android:id = "@+id/btnMult" > </ Button > < Button android:layout_height = "wrap_content" android:layout_width = "match_parent" android:layout_weight = "1" android:text = "/" android:textSize = "8pt" android:id = "@+id/btnDiv" > </ Button > </ LinearLayout > < TextView android:layout_height = "wrap_content" android:layout_width = "match_parent" android:layout_marginLeft = "5pt" android:layout_marginRight = "5pt" android:textSize = "12pt" android:layout_marginTop = "3pt" android:id = "@+id/tvResult" android:gravity = "center_horizontal" > </ TextView > </ LinearLayout > |
Open MainActivity.java and write the code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
| public class MainActivity extends Activity implements OnClickListener { EditText etNum1; EditText etNum2; Button btnAdd; Button btnSub; Button btnMult; Button btnDiv; TextView tvResult; String oper = "" ; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); // find the elements etNum1 = (EditText) findViewById(R.id.etNum1); etNum2 = (EditText) findViewById(R.id.etNum2); btnAdd = (Button) findViewById(R.id.btnAdd); btnSub = (Button) findViewById(R.id.btnSub); btnMult = (Button) findViewById(R.id.btnMult); btnDiv = (Button) findViewById(R.id.btnDiv); tvResult = (TextView) findViewById(R.id.tvResult); // set a listener btnAdd.setOnClickListener( this ); btnSub.setOnClickListener( this ); btnMult.setOnClickListener( this ); btnDiv.setOnClickListener( this ); } @Override public void onClick(View v) { // TODO Auto-generated method stub float num1 = 0 ; float num2 = 0 ; float result = 0 ; // check if the fields are empty if (TextUtils.isEmpty(etNum1.getText().toString()) || TextUtils.isEmpty(etNum2.getText().toString())) { return ; } // read EditText and fill variables with numbers num1 = Float.parseFloat(etNum1.getText().toString()); num2 = Float.parseFloat(etNum2.getText().toString()); // defines the button that has been clicked and performs the corresponding operation // write operation into oper, we will use it later for output switch (v.getId()) { case R.id.btnAdd: oper = "+" ; result = num1 + num2; break ; case R.id.btnSub: oper = "-" ; result = num1 - num2; break ; case R.id.btnMult: oper = "*" ; result = num1 * num2; break ; case R.id.btnDiv: oper = "/" ; result = num1 / num2; break ; default : break ; } // form the output line tvResult.setText(num1 + " " + oper + " " + num2 + " = " + result); } }
|
Let’s extend the functionality by making menu with clearing fields and exit items. Items will be named Reset and Quit.
Add two constants - these will be IDs of the menu items.
1
2
3
4
5
6
| public class MainActivity extends Activity implements OnClickListener { final int MENU_RESET_ID = 1 ; final int MENU_QUIT_ID = 2 ; EditText etNum1; |
(add only the highlighted code)
And write code for menu creation and processing:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| // menu creation @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add( 0 , MENU_RESET_ID, 0 , "Reset" ); menu.add( 0 , MENU_QUIT_ID, 0 , "Quit" ); return super .onCreateOptionsMenu(menu); } // process menu item clicks @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()) { case MENU_RESET_ID: // clear the fields etNum1.setText( "" ); etNum2.setText( "" ); tvResult.setText( "" ); break ; case MENU_QUIT_ID: // exit the application finish(); break ; } return super .onOptionsItemSelected(item); } |
Save everything and run. Two menu items appeared:
Reset - clears all the fields
Quit - closes the application
Quit - closes the application
Comments
Post a Comment