2025-05-17

這個小項目除瞭要我們活用按鈕的組之外,也示范如何利用同一個監聽處理不同事件然後與TextView的文字作出相應的變化廢話不多說:效果圖如下:

  看到這個界面可能最直接的處理辦法就是每一個按鈕設置一個監聽事件然後在每一個事件上處理即可,沒錯。這個辦法是可行的但最後我們看到的代碼是不是很不優雅,有很多重復的操作?所以我們想到瞭用一個監聽來處理不同的事件。那要怎麼做呢?跟著我一起來做吧大概代碼如下:聲明一個點擊的監聽事件 

1. private OnClickListener listener;

1. listener= new OnClickListener() {
2. 
3. @Override
4. public void onClick(View v) {
5. // TODO Auto-generated method stub
6. switch (v.getId()) {
7. case R.id.Button01:
8. if(isEmpty(mEditText1,mEditText2)==false)
9. {
10. Confirm().show();
11. return;
12. }
13. mTextView1.setText("+");
14. StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())+
15. (Float.parseFloat(mEditText2.getText().toString()))));
16. mTextView2.setText(StrTemp);
17. break;
18. case R.id.Button02:
19. if(isEmpty(mEditText1,mEditText2)==false)
20. {
21. Confirm().show();
22. return;
23. }
24. mTextView1.setText("-");
25. StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())-
26. (Float.parseFloat(mEditText2.getText().toString()))));
27. mTextView2.setText(StrTemp);
28. break;
29. case R.id.Button03:
30. if(isEmpty(mEditText1,mEditText2)==false)
31. {
32. Confirm().show();
33. return;
34. }
35. mTextView1.setText("*");
36. StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())*
37. (Float.parseFloat(mEditText2.getText().toString()))));
38. mTextView2.setText(StrTemp);
39. break;
40. case R.id.Button04:
41. if(isEmpty(mEditText1,mEditText2)==false)
42. {
43. Confirm().show();
44. return;
45. }
46. mTextView1.setText("/");
47. StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())/
48. (Float.parseFloat(mEditText2.getText().toString()))));
49. mTextView2.setText(StrTemp);
50. break;
51. default:
52. break;
53. }
54. }
55. };
 

  代碼簡單明瞭,通過getid()這個方法可以得到相應的按鈕,之後處理。OK  代碼大致上是這樣,之後設置按鈕的單擊事件
1. mButton1.setOnClickListener(listener);
2.         mButton2.setOnClickListener(listener);
3.         mButton3.setOnClickListener(listener);
4.         mButton4.setOnClickListener(listener);

  代碼裡面也順便封裝瞭彈出提出框代碼如下:
1. public AlertDialog Confirm()
2. {
3. 
4. alert=new AlertDialog.Builder(SimpleCalc.this)
5. .setTitle(R.string.confirm)
6. .setMessage(R.string.content)
7. .setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
8. 
9. @Override
10. public void onClick(DialogInterface dialog, int which) {
11. // TODO Auto-generated method stub
12. 
13. }
14. })
15. .create();
16. 
17. return alert;
18. }

  檢查文本框是否為空的方法
1. public boolean isEmpty(EditText e,EditText a)
2. {
 

  到此為止一個簡單的計算器己經完成,下次我們將把按鈕全都放在屏幕 上再利用事件傳遞的方法來完成 ,通過點擊按鈕數字來計算,相信有看到這一篇的朋友知道應該知道怎麼做瞭。
 

摘自  nihao

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *