这个小项目除了要我们活用按钮的组之外,也示范如何利用同一个监听处理不同事件然后与TextView的文字作出相应的变化废话不多说:效果图如下:
calc.png (35.78 KB, 下载次数: 305)
看到这个界面可能最直接的处理办法就是每一个按钮设置一个监听事件然後在每一个事件上处理即可,没错。这个办法是可行的但最后我们看到的代码是不是很不优雅,有很多重复的操作?所以我们想到了用一个监听来处理不同的事件。那要怎么做呢?跟着我一起来做吧大概代码如下:声明一个点击的监听事件
- private OnClickListener listener;
- listener= new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- switch (v.getId()) {
- case R.id.Button01:
- if(isEmpty(mEditText1,mEditText2)==false)
- {
- Confirm().show();
- return;
- }
- mTextView1.setText("+");
- StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())+
- (Float.parseFloat(mEditText2.getText().toString()))));
- mTextView2.setText(StrTemp);
- break;
- case R.id.Button02:
- if(isEmpty(mEditText1,mEditText2)==false)
- {
- Confirm().show();
- return;
- }
- mTextView1.setText("-");
- StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())-
- (Float.parseFloat(mEditText2.getText().toString()))));
- mTextView2.setText(StrTemp);
- break;
- case R.id.Button03:
- if(isEmpty(mEditText1,mEditText2)==false)
- {
- Confirm().show();
- return;
- }
- mTextView1.setText("*");
- StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())*
- (Float.parseFloat(mEditText2.getText().toString()))));
- mTextView2.setText(StrTemp);
- break;
- case R.id.Button04:
- if(isEmpty(mEditText1,mEditText2)==false)
- {
- Confirm().show();
- return;
- }
- mTextView1.setText("/");
- StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())/
- (Float.parseFloat(mEditText2.getText().toString()))));
- mTextView2.setText(StrTemp);
- break;
- default:
- break;
- }
- }
- };
代码简单明了,通过getid()这个方法可以得到相应的按钮,之后处理。OK 代码大致上是这样,之后设置按钮的单击事件
- mButton1.setOnClickListener(listener);
- mButton2.setOnClickListener(listener);
- mButton3.setOnClickListener(listener);
- mButton4.setOnClickListener(listener);
复制代码 代码里面也顺便封装了弹出提出框代码如下:
- public AlertDialog Confirm()
- {
- alert=new AlertDialog.Builder(SimpleCalc.this)
- .setTitle(R.string.confirm)
- .setMessage(R.string.content)
- .setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- }
- })
- .create();
- return alert;
- }
检查文本框是否为空的方法
- public boolean isEmpty(EditText e,EditText a)
- {
到此为止一个简单的计算器己经完成,下次我们将把按钮全都放在屏幕 上再利用事件传递的方法来完成 ,通过点击按钮数字来计算,相信有看到这一篇的朋友知道应该知道怎么做了。