【Android入门】提高篇:重构BMI应用程序
一、重构程序
-
重构BMI应用程序
我们将 “MVC模式” 应用在 “MainActivity.java” 程序上,把 声明与查找界面组件 和 为特定界面组件添加控制流程 的两段代码,分别整理成两个函数 findViews() 和 setListensers()
MainActivity.java
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。package com.example.myapp; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.text.DecimalFormat; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViews(); setListensers(); } private Button button_calc; private EditText field_height; private EditText field_weight; private TextView view_result; private TextView view_suggest; private void findViews() { button_calc = (Button) findViewById(R.id.submit); field_height = (EditText) findViewById(R.id.height); field_weight = (EditText) findViewById(R.id.weight); view_result = (TextView) findViewById(R.id.result); view_suggest = (TextView) findViewById(R.id.suggest); } //Listen for button clicks private void setListensers() { button_calc.setOnClickListener(calcBMI); } //改成“Button.OnClickListener”是为了让“Button”界面组件和“OnClickListener”界面组件方法之间的关系清晰 private Button.OnClickListener calcBMI = new Button.OnClickListener() { public void onClick(View v) { DecimalFormat nf = new DecimalFormat("0.00"); double height = Double.parseDouble(field_height.getText().toString())/100; double weight = Double.parseDouble(field_weight.getText().toString()); double BMI = weight / (height * height); //Present result view_result.setText(getText(R.string.bmi_result) + nf.format(BMI)); //Give health advice if(BMI > 25) { view_suggest.setText(R.string.advice_heavy); } else if(BMI < 20) { view_suggest.setText(R.string.advice_light); } else { view_suggest.setText(R.string.advice_average); } } }; }
-
添加对话框(Dialog)
本节学习如何显示对话框。在本节中,我们要产生一个应用程序中常见的“关于”页面,我们的“关于”页面将以弹出对话框的方式表现。所需要做的是编写负责处理对话框的“openOptionsDialog”函数,并将之附加在原本应用程序中“calcBMI”这个按钮组件的“OnClickListener”方法上。当我们按下“计算BMI值”按钮时,即弹出对话框。
修改 MainActivity.java
private Button.OnClickListener calcBMI = new Button.OnClickListener() { public void onClick(View v) { ... } else { view_suggest.setText(R.string.advice_average); } openOptionsDialog(); } }; private void openOptionsDialog() { new AlertDialog.Builder(MainActivity.this) .setTitle(R.string.about_title) .setMessage(R.string.about_msg) .setPositiveButton(R.string.ok_label, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } } ).show(); }
新增 res/layout/string.xml
<resources> ... <string name="about_title">关于 Android BMI</string> <string name="about_msg">Android BMI Calc</string> <string name="ok_label">确认</string> </resources>

更多精彩