Android开发--身高体重指数(BIM)计算--添加对话框(Dialog)(Toast界面组件、错误处理try-catch)
2012-08-09 10:32
274 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:添加对话框(Dialog)(Toast界面组件、错误处理)
* 作 者: 雷恒鑫
* 完成日期: 2012 年 08 月 09 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
①Toast页面组件:
Toast页面组件的作用是弹出一个消息框,快速在屏幕上显示一小段信息。
openOptionsDialog()函数增加的代码如下:
调用“show()”方法来将Taost组件显示在屏幕上
运行结果:
②错误处理:
前面使用XML说明文件定义界面时,在字段的属性中添加了只能输入数字的限制。现在我们将体重(weight)输入的限制移除,允许输入除了整数之外的其他符号(为了可以输入小数点位数的体重)。
打开“res/layout/main.xml”文件,把说明文件中的语句从原本的:
改为:
以上代码增加了“android:singleLine="true"”单行输入的属性。
注意:这样改有一个缺点:当用户在“体重”字段输入了非整数也非浮点数的值时,整个程序就崩溃了 。
因此在下面的程序改进中,使用“try......catch”语句做错误处理,利用“Toast”组件来通知用户他们的输入有误。
try......catch插入的位置如下:
运行结果:
③提取字符串:
为了更好的重用,继续把字符串提取到“res/values/string.xml”中:
然后在程序中使用“R.string.inputerror”来取得字符串:
一下是修改后完整的“Bmi.java文件代码:
运行结果:
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:添加对话框(Dialog)(Toast界面组件、错误处理)
* 作 者: 雷恒鑫
* 完成日期: 2012 年 08 月 09 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
①Toast页面组件:
Toast页面组件的作用是弹出一个消息框,快速在屏幕上显示一小段信息。
openOptionsDialog()函数增加的代码如下:
private void openOptionsDialog(){ Toast.makeText(Bmi.this, "BMI 计算器", Toast.LENGTH_SHORT).show(); /*注释掉原本的对话框 new AlertDialog.Builder(Bmi.this) .setTitle(R.string.about_title) .setMessage(R.string.about_msg) .setPositiveButton(R.string.ok_lable, new DialogInterface.OnClickListener(){ public void onClick( DialogInterface dialoginterface,int i){ } }) .show(); */ }
调用“show()”方法来将Taost组件显示在屏幕上
运行结果:
②错误处理:
前面使用XML说明文件定义界面时,在字段的属性中添加了只能输入数字的限制。现在我们将体重(weight)输入的限制移除,允许输入除了整数之外的其他符号(为了可以输入小数点位数的体重)。
打开“res/layout/main.xml”文件,把说明文件中的语句从原本的:
<EditText android:id="@+id/weight" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numeric="integer" android:text="" />
改为:
<EditText android:id="@+id/weight" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:text="" />
以上代码增加了“android:singleLine="true"”单行输入的属性。
注意:这样改有一个缺点:当用户在“体重”字段输入了非整数也非浮点数的值时,整个程序就崩溃了 。
因此在下面的程序改进中,使用“try......catch”语句做错误处理,利用“Toast”组件来通知用户他们的输入有误。
try......catch插入的位置如下:
private Button.OnClickListener calcBMI = new Button.OnClickListener() { public void onClick(View v) { DecimalFormat nf = new DecimalFormat("0.00"); try{ //EditText fieldheight = (EditText) findViewById(R.id.height); //EditText fieldweight = (EditText) findViewById(R.id.weight); double height = Double .parseDouble(field_height.getText().toString()) / 100; double weight = Double .parseDouble(field_weight.getText().toString()); double BMI = weight / (height * height); //TextView result = (TextView) findViewById(R.id.result); //result.setText("Your BMI is " + nf.format(BMI)); //Present result view_result.setText(getText(R.string.bmi_result)+nf.format(BMI)); // Give health advice // TextView fieldsuggest = (TextView) findViewById(R.id.suggest); if (BMI > 25) { view_result.setText(R.string.advice_heavy); } else if (BMI < 20) { view_result.setText(R.string.advice_light); } else { view_result.setText(R.string.advice_average); } openOptionsDialog(); }catch(Exception obj){ Toast.makeText(Bmi.this, "打错了吗?只能输入数字喔", Toast.LENGTH_SHORT).show(); } }; };
运行结果:
③提取字符串:
为了更好的重用,继续把字符串提取到“res/values/string.xml”中:
<?xml version="1.0" encoding="utf-8"?> <resources> ............ <string name="input_error">打错了吗?只能输入数字喔</string> </resources>
然后在程序中使用“R.string.inputerror”来取得字符串:
Toast.makeText(Bmi.this, "BMI 计算器", Toast.LENGTH_SHORT).show();
一下是修改后完整的“Bmi.java文件代码:
package com.demo.android.bmi;
import java.text.DecimalFormat;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Bmi extends Activity {
/**
* Called when the activity is first created.
*
* @param <calcBMI>
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
setListensers();
// Listen for button clicks
//Button button = (Button) findViewById(R.id.submit);
//button.setOnClickListener(calcBMI);
}
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);
}
private Button.OnClickListener calcBMI = new Button.OnClickListener() {
public void onClick(View v) {
DecimalFormat nf = new DecimalFormat("0.00");
try{
//EditText fieldheight = (EditText) findViewById(R.id.height);
//EditText fieldweight = (EditText) findViewById(R.id.weight);
double height = Double
.parseDouble(field_height.getText().toString()) / 100;
double weight = Double
.parseDouble(field_weight.getText().toString());
double BMI = weight / (height * height);
//TextView result = (TextView) findViewById(R.id.result);
//result.setText("Your BMI is " + nf.format(BMI));
//Present result
view_result.setText(getText(R.string.bmi_result)+nf.format(BMI));
// Give health advice
// TextView fieldsuggest = (TextView) findViewById(R.id.suggest);
if (BMI > 25) {
view_result.setText(R.string.advice_heavy);
} else if (BMI < 20) {
view_result.setText(R.string.advice_light);
} else {
view_result.setText(R.string.advice_average);
}
openOptionsDialog();
}catch(Exception obj){
Toast.makeText(Bmi.this, R.string.input_error, Toast.LENGTH_SHORT).show();
}
}
};
private void openOptionsDialog(){ Toast.makeText(Bmi.this, "BMI 计算器", Toast.LENGTH_SHORT).show(); /*注释掉原本的对话框 new AlertDialog.Builder(Bmi.this) .setTitle(R.string.about_title) .setMessage(R.string.about_msg) .setPositiveButton(R.string.ok_lable, new DialogInterface.OnClickListener(){ public void onClick( DialogInterface dialoginterface,int i){ } }) .show(); */ }
}
运行结果:
相关文章推荐
- Android开发--身高体重指数(BIM)计算--添加对话框(Dialog)(设计对话框、定义调用点、实体对话框、重构、添加按钮)
- Android开发--身高体重指数(BIM)计算--添加菜单(Menu)(菜单功能、创建菜单、处理选项动作)
- Android开发--身高体重指数(BIM)计算--定义Android列表(Manifest)并添加新活动(Activity)
- Android开发--身高体重指数(BIM)计算--表达用户界面
- IOS开发之--异常处理--使用try 和 catch 来捕获错误。
- Android开发--身高体重指数(BIM)计算--访问标识符号(android:id属性/XML说明文件与R.java资源文件/将字符串抽离XML/新增XML文件)
- Android开发--身高体重指数(BIM)计算--完成BMI程序
- Android开发--身高体重指数(BIM)计算--设计用户界面--视图(View)设计
- Android开发--身高体重指数(BIM)计算--设计用户界面--指定输入类型(InputType)
- APP开发实战151-Android使用try…catch…处理异常
- Android开发--身高体重指数(BIM)计算--查看线上内容(Uri)--打开网页--重构--使用Uri查看Google地图
- Android软件开发之盘点所有Dialog对话框大合集(一)
- Android软件开发之盘点所有Dialog对话框大合集(一)
- 【Android游戏开发之六】在SurfaceView中添加组件!!!!并且相互交互数据!!!!
- Android异常处理——try、catch、finally、throw、throws
- Android界面之----自定义的Dialog,然后利用回调方法,在调用处,进行Dialog中各按钮的事件处理。
- 【android开发记录片】2.自定义/定制 Dialog组件
- C#学习使用try-catch-finally错误处理表达式(续)--定义自己的异常消息类
- Android-调用本地方法计算int数值相加结果显示在界面上/NDK-JNI开发实例(三)
- Android软件开发之盘点所有Dialog对话框大合集(一)