Android实验七——使用Intent在Activity间传输数据
一、实验要求和目的
- 理解Activity组件的功能与作用;
- 掌握使用Intent在多个Activity组件间传输数据的方法;
- 掌握在AndroidManifest.xml中配置Activity组件的方法。
二、实验环境
- 部署有Android Studio和Android SDK的主机;
- 建议在机房的HelloWorld例子上完成。
三、上机操作参考步骤
1、 完成一个体重计算器的应用程序开发。图1为该应用的首界面(即主Activity),用户可选择性别和输入身高值,点击“计算”按钮后启动图2所示的界面(即第二个Activity)。可以通过Intent携带性别、身高数据到第二个Activity,然后计算出体重并把三个数据显示到三个TextView中即可。
体重计算公式:
男性标准体重(单位:公斤)为:(身高(单位:厘米)-80)×0.7;
女性标准体重(单位:公斤)为:(身高(单位:厘米)-70)×0.6。
MainActivity.java
package com.example.test7; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RadioGroup; import android.widget.Toast; public class MainActivity extends Activity { private RadioGroup rg_gender; private EditText et_height; private Button btn_start; private String gender=""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); choosegender(); start(); } //初始化 private void init(){ rg_gender=findViewById(R.id.rg_gender); et_height=findViewById(R.id.et_height); btn_start=findViewById(R.id.btn_start); } //选择性别 private void choosegender(){ rg_gender.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.male) { gender="男"; } else if (checkedId == R.id.female) { gender="女"; } } }); } //点击“计算”,进入下一界面 private void start(){ btn_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this,NewActivity.class); intent.putExtra("gender",gender);//将性别信息放入intent intent.putExtra("height",et_height.getText().toString());//获取输入框中的身高信息并放入intent startActivity(intent); } }); } }
NewActivity.java
package com.example.test7; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class NewActivity extends AppCompatActivity { private TextView tv_xingbie,tv_shengao,tv_weight; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new); init(); display(); } private void init(){ tv_xingbie=findViewById(R.id.tv_xingbie); tv_shengao=findViewById(R.id.tv_shengao); tv_weight=findViewById(R.id.tv_weight); } private void display(){ Intent intent=getIntent(); String gender=intent.getStringExtra("gender"); String height=intent.getStringExtra("height"); tv_xingbie.setText("你是一位"+gender+"性"); tv_shengao.setText("你的身高是"+height+"厘米"); int tempheight=Integer.parseInt(height); //计算标准体重 if(gender=="男"){ double weight=(tempheight-80)*0.7; tv_weight.setText("你的标准体重是"+weight+"公斤"); }else{ double weight=(tempheight-70)*0.6; tv_weight.setText("你的标准体重是"+weight+"公斤"); } } }
布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="计算标准体重"
android:textSize="25dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<RadioGroup
android:id="@+id/rg_gender"
android:layout_width="162dp"
android:layout_height="62dp"
android:layout_marginStart="52dp"
android:layout_marginTop="32dp"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:" />
<RadioButton
android:id="@+id/male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男" />
<RadioButton
android:id="@+id/female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女" />
</RadioGroup>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="52dp"
android:layout_marginTop="52dp"
android:text="身高:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rg_gender" />
<EditText
android:id="@+id/et_height"
android:layout_width="88dp"
android:layout_height="44dp"
android:layout_marginStart="12dp"
android:layout_marginTop="36dp"
app:layout_constraintStart_toEndOf="@+id/textView2"
app:layout_constraintTop_toBottomOf="@+id/rg_gender" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="52dp"
android:text="cm"
app:layout_constraintStart_toEndOf="@+id/et_height"
app:layout_constraintTop_toBottomOf="@+id/rg_gender" />
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:text="计算"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_height" />
</androidx.constraintlayout.widget.ConstraintLayout>
activity_new.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".NewActivity">
<TextView
android:id="@+id/tv_xingbie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="212dp"
android:text="你是一位男性"
android:textSize="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_shengao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:text="你的身高是180厘米"
android:textSize="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_xingbie" />
<TextView
android:id="@+id/tv_weight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="你的标准体重是***公斤"
android:textSize="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.495"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_shengao" />
</androidx.constraintlayout.widget.ConstraintLayout>