首页 > 其他分享 >【Android开发】Bundle和Intent实例1-实现根据身高计算标准体重

【Android开发】Bundle和Intent实例1-实现根据身高计算标准体重

时间:2023-03-18 11:31:44浏览次数:34  
标签:layout Bundle content Intent stature wrap import Android android


编写一个实例来实现Bundle在Activity之间传递信息和Intent跳转Activity页面的效果。

此实例是让用户输入性别和身高,以此来判断用户的最佳合适的体重(计算最佳体重按照科学数据计算)。

效果如图

【Android开发】Bundle和Intent实例1-实现根据身高计算标准体重_Activity

【Android开发】Bundle和Intent实例1-实现根据身高计算标准体重_Activity_02

下面我们来实现这个实例:



res/layout/main.xml(主页面):


<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tableLayout1"
android:orientation="vertical"
>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="计算您的标准体重"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:"/>
<RadioGroup android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:checked="true"/>
<RadioButton android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"/>
</RadioGroup>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="身高:"/>
<EditText android:layout_width="40pt"
android:layout_height="wrap_content"
android:id="@+id/stature"/>
</LinearLayout>
<Button android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"/>
</LinearLayout>



res/layout/main2.xml(结果页面):


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sex"
android:textSize="10pt"
android:text="null"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/stature"
android:textSize="10pt"
android:text="null"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/weight"
android:textSize="10pt"
android:text="null"/>
</LinearLayout>


保存身高和体重的JavaBean(实现了java.io.Seralizable接口):


(在使用Bundle类传递数据包时,可以放入一个可序列化的对象。这样,当要传递的数据字段比较多时,采用该方法比较方便。在本实例中,为了在Bundle中放入一个可序列化的对象,我们创建了一个可序列化的Java类,方便存储可序列化对象)


Info.java:


package com.example.test;

import java.io.Serializable;

public class Info implements Serializable{
private static final long serialVersionUID=1L;
private String sex="";//性别
private int stature=0;//身高
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getStature() {
return stature;
}
public void setStature(int stature) {
this.stature = stature;
}

}


MainActivity:


package com.example.test;  

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class MainActivity extends Activity {


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Info info=new Info();//实例化一个保存输入基本信息的对象
if("".equals(((EditText)findViewById(R.id.stature)).getText().toString())){
Toast.makeText(MainActivity.this, "请输入您的身高,否则不能计算!", 1).show();
return;
}
int stature=Integer.parseInt(((EditText)findViewById(R.id.stature)).getText().toString());
//获取设置性别的单选按钮组
RadioGroup sex=(RadioGroup)findViewById(R.id.radioGroup1);
//获取单选按钮组的值
for (int i = 0; i < sex.getChildCount(); i++) {
RadioButton r=(RadioButton)sex.getChildAt(i);
if(r.isChecked()){
info.setSex(r.getText().toString());
break;
}
}
info.setStature(stature);
Bundle bundle=new Bundle();
bundle.putSerializable("info", info);
Intent intent=new Intent(MainActivity.this,ContentActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}


结果页面:


(别忘记在AndroidManifest.xml中注册新的Activity:


在<application></application>标签中添加


<activity 
android:label="显示结果"
android:icon="@drawable/ic_launcher"
android:name=".ContentActivity"/>)

ContentActivity:


package com.example.test;


import java.text.DecimalFormat;
import java.text.NumberFormat;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;


public class ContentActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

TextView sex=(TextView)findViewById(R.id.sex);
TextView stature=(TextView)findViewById(R.id.stature);
TextView weight=(TextView)findViewById(R.id.weight);

Intent intent=this.getIntent();//获取Intent对象
Bundle bundle=intent.getExtras();//获取传递的数据包
Info info=(Info)bundle.getSerializable("info");//获取一个可序列化的Info对象
sex.setText("您是一位"+info.getSex()+"士");
stature.setText("您的身高是"+info.getStature()+"厘米");
//显示计算后的标准体重
weight.setText("您的体重标准是:"+getWeight(info.getSex(),info.getStature())+"公斤");
}

/* 功能:计算标准体重
* @param sex
* @param stature
* @return */
private String getWeight(String sex, int stature) {
String weight="";//保存体重
NumberFormat format=new DecimalFormat();
if(sex.equals("男")){
weight=format.format((stature-80)*0.7);//计算男士标准体重
}else{
weight=format.format((stature-70)*0.6);//计算女士标准体重
}
return weight;
}

}


当我输入男,172cm身高时,得到我的标准体重是.....啊,该减肥了(你学会了吗?)


标签:layout,Bundle,content,Intent,stature,wrap,import,Android,android
From: https://blog.51cto.com/u_16012040/6129462

相关文章

  • 【Android 逆向】【攻防世界】boomshakalaka-3
    1.apk安装到手机,是一个cocos2dx写的打飞机的游戏题目描述跟得分有关(题目描述:playthegame,getthehighestscore)2.jadx打开apkpublicclassFirstTestextend......
  • 【转】android中的armeabi、armeabi-v7a、arm64-v8a及x86等
    1.Android设备的CPU类型armeabiv-v7a:第7代及以上的ARM处理器。2011年15月以后的生产的大部分Android设备都使用它.arm64-v8a:第8代、64位ARM处理器,很少设备,三星Ga......
  • Android SDK 环境变量 配置
    (windows10配置测试成功!:)SDK文件夹下tools和platform-tools两个文件夹1、打开环境变量配置窗口。打开方法win7和xp稍有不同;系统属性-高级-环境变量2、打开“环境变量......
  • Android 系列 6.2 用Material Design 更好
    6.2用MaterialDesign更好问题您希望您的应用看起来像一个现代的Android应用程序。解MaterialDesign是Android应用程序开发的新视觉范例,或......
  • Android基础和组件
    AndroidFundamentalsandComponents在开始开发之前,我们需要了解Android基础和组件,我们将在开发我们的Android应用程序时经常使用。从开发人员的角度来看,Android的一......
  • android 如何修改USB存储在"我的电脑"中显示的label名称
    说明:内置SD卡即是eMMC上的FATpartition,可以指定label。 外置SDcard是外部设备,无法指定label。InternalSDcard à Youcanassign labelExternalSDcard à Youc......
  • android Loopback回路测试有啸叫,回音
    解决loopback啸叫回音的基本方法是减小音量使用afeloopback时可修改: AudioLoopbackController.cpp中的值staticconstfloatkMaxMasterVolume=1.0;默认设定为最大,......
  • android 如何获取MCC/MNC
    获取MCC/MNC以便控制小区广播的开启 双卡:((GeminiPhone)mPhone).getIccCardGemini(simId).getIccRecords().getIMSI(); 单卡:GsmPhone.getI......
  • android CellbroadCast涉及的文件有哪些
    UI相关文件:CBMessage.javaCBMessageItem.javaCBMessageListActivity.javaCBMessageListAdapter.javaCBMessageListItem.java 收发相关......
  • AndroidStudio中调试时一直显示waiting for debugger
    场景在AndroidStudio中连接到手机上进行调试时一直提示:WatingForDebugger​​关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现1.查看任务管理器......