package com.cheng.bigtalkdesignpatterns.simplefactory; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import com.cheng.designpatternstudy.R; public class BTDPSimpleFactoryActivity extends AppCompatActivity { private EditText mNumberAET; private EditText mNumberBET; private Spinner mOperatorsSP; private TextView mResultTV; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_btdp_simplefactory); initView(); } private void initView() { this.mNumberAET = (EditText) this.findViewById(R.id.bti_numbera_et); this.mNumberBET = (EditText) this.findViewById(R.id.bti_numberb_et); this.mOperatorsSP = (Spinner) this.findViewById(R.id.bti_operators_sp); this.mResultTV = (TextView) this.findViewById(R.id.bti_result_tv); } public void onClick(View v) { switch (v.getId()) { case R.id.bti_reset_btn: reset(); break; case R.id.bti_calculate_btn: calculate(); break; } } private void reset() { mNumberAET.setText(""); mNumberBET.setText(""); mResultTV.setText(""); mOperatorsSP.setSelection(0, true); } private void calculate() { Operation operation = OperationFactory.createOperate((String) mOperatorsSP.getSelectedItem()); operation.numberA = getDoubleFromEditText(mNumberAET); operation.numberB = getDoubleFromEditText(mNumberBET); double result = operation.getResult(); mResultTV.setText(String.valueOf(result)); } private double getDoubleFromEditText(EditText et) { double num = 0; if (et == null) { et.setError("传入的EditText不能为null"); return num; } if (et.getText().length() == 0) { et.setError("请在EditText中输入要计算的数值"); return num; } String temp = et.getText().toString(); if (TextUtils.isEmpty(temp)) { et.setError("输入不能为空"); return num; } try { num = Double.parseDouble(temp); } catch (Exception e) { num = 0; } return num; } }