一、实验目的
1.理解Activity的生命周期
2.掌握Intent的作用及应用
3.设计使用Intent启动Activity并实现信息传递
二、实验过程
(一)Activity跳转与信息传递
1、在前面实验创建的UserLogin应用中,添加新Activity“SecondActivity”及相应的布局文件 “activity_second.xml”
得到SecondActivity和activity_second.xml文件
2、在SecondActivity的布局文件中添加TextView控件,用以显示MainActivity传递来的信息
3、当用户点击图1 所示MainActivity中的“登录”按钮时,将用户信息传递给SecondActivity , 在SecondActivity中接收并显示用户信息图2
初始化控件,对登录界面的“登录”按钮设置监听。
使用intent显示指定跳转到SecondActivity,使用putExtra()方法,将数据存储在intent对象。
SecondActivity.java文件中,初始化控件。intent对象使用getStringExtra()方法获取存储的姓名、密码和性别信息。再使用控件调用setText()将信息显示在界面。
4、运行并观察结果。
图1 MainActivity提交信息 图2 SecondActivity接收用户
(二)Activity信息回传与处理
1、在实验创建的UserLogin应用中,添加第三个Activity“ThirdActivty”及相应的布局文件 “activity_third_activty.xml”
2、在ThirdActivity的布局文件中添加RadioGroup控件,用以进行用户选择如
图1
3、当用户点击图1 所示ThirdActivity中的“OK”按钮时,将用户选择结果信息回传给SecondActivity 。
初始化控件,并对OK按钮设置监听。
使用intent显示意图。将like值存储进intent参数。使用setResult()方法携带数据进行回传,设置返回码为2。调用finish()方法关闭ThirdActivty。
4、修改Activity“SecondActivity”及相应的布局文件 “activity_second.xml”,添加“课程调查”按钮,编写onClick。使用intent显示意图,点击该按钮时启动ThirdActivty并接收用户选择结果。
5、在SecondActivity中接收ThirdActivity回传的数据并使用Toaste显示接收到的信息,如
图2
6、运行并观察结果。
图1 ThirdActivity运行图 图2 SecondActivity 运行图
三、实验总结
本次实验对Activity的生命周期加强了理解,学会使用Intent显示意图启动Activity,学会putExtra()方法、getStringExtra()方法对数据进行传输。使用setResult()和onActivityResult()方法对数据进行回传与处理。
1.MainActivity.java
package cn.itcast.userlogin;
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.RadioButton;
public class MainActivity<protcect, protcected> extends Activity implements View.OnClickListener {
private Button mbtn_submit;
private EditText met_name;
private EditText met_password;
private RadioButton mrd_male;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mbtn_submit=(Button)findViewById(R.id.btn_submit);
met_name=(EditText)findViewById(R.id.et_name);
met_password=(EditText)findViewById(R.id.et_password);
mrd_male=(RadioButton)findViewById(R.id.rd_male);
mbtn_submit.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
if (arg0.getId() == R.id.btn_submit) {//Log.i("MainActivity","button is click!");
Intent intent = new Intent(this, SecondActivity.class);
String name = met_name.getText().toString().trim();
String password = met_password.getText().toString().trim();
String sex = "美女";
if (mrd_male.isChecked()) {
sex = "帅哥";
}
intent.putExtra("name", name);
intent.putExtra("password", password);
intent.putExtra("sex", sex);
startActivity(intent);
}
}
}
2.activity_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="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/colorbackground">
<ImageView
android:layout_width="128dp"
android:layout_height="128dp"
android:background="@mipmap/tu"
android:layout_marginTop="150dp"
android:layout_gravity="center" />
<LinearLayout
android:layout_width="347dp"
android:layout_height="45dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="40dp"
android:layout_marginTop="20dp"
android:layout_marginRight="40dp"
android:layout_marginBottom="10dp"
android:background="@color/coloredit"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_name"
android:layout_width="71dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="账号:"
android:textSize="20sp"
tools:ignore="HardcodedText" />
<EditText
android:id="@+id/et_name"
android:layout_width="271dp"
android:layout_height="45sp"
android:hint="在此入账号"
android:textSize="20sp"
android:inputType="text"
tools:ignore="HardcodedText" />
</LinearLayout>
<LinearLayout
android:layout_width="347dp"
android:layout_height="45dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="40dp"
android:layout_marginTop="20dp"
android:layout_marginRight="40dp"
android:layout_marginBottom="10dp"
android:background="@color/coloredit">
<TextView
android:id="@+id/textView2"
android:layout_width="71dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="密码:"
android:textSize="20sp" />
<EditText
android:id="@+id/et_password"
android:layout_width="271dp"
android:layout_height="45sp"
android:hint="在此输入账号密码"
android:inputType="textPassword"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="347dp"
android:layout_height="45dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="40dp"
android:layout_marginTop="20dp"
android:layout_marginRight="40dp"
android:layout_marginBottom="10dp"
android:background="@color/coloredit"
android:orientation="horizontal">
<TextView
android:id="@+id/textView3"
android:layout_width="71dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="性别:"
android:textSize="20sp" />
<RadioGroup
android:id="@+id/rg_sex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rd_male"
android:layout_marginStart="20dp"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="男"
android:textSize="20sp" />
<RadioButton
android:id="@+id/rd_female"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="女"
android:textSize="20sp" />
</RadioGroup>
</LinearLayout>
<Button
android:id="@+id/btn_submit"
android:layout_marginTop="25dp"
android:layout_width="150dp"
android:layout_height="60dp"
android:text="登录"
android:textSize="25sp"
android:textColor="@color/coloredit"
android:background="@color/colorbutton"
android:layout_gravity="center"
android:onClick="onClick"
/>
</LinearLayout>
3.SecondActivity.java
package cn.itcast.userlogin;
import androidx.annotation.CheckResult;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class SecondActivity extends Activity implements View.OnClickListener {
private TextView mtv_name;
@SuppressLint("SetTextI18n")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
mtv_name = (TextView) findViewById(R.id.tv_name);
TextView mtv_password = (TextView) findViewById(R.id.tv_password);
TextView mtv_sex = (TextView) findViewById(R.id.tv_sex);
Button mbtn_survey = (Button) findViewById(R.id.btn_survey);
mbtn_survey.setOnClickListener(this);
Intent intent = getIntent();
String name = intent.getStringExtra("name");
String password = intent.getStringExtra("password");
String sex = intent.getStringExtra("sex");
mtv_name.setText("姓名:" + name);
mtv_password.setText("密码:" + password);
mtv_sex.setText("性别:" + sex);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_survey) {
Intent intent = new Intent(this, ThirdActivty.class);
startActivityForResult(intent, 1);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent like) {
super.onActivityResult(requestCode, resultCode, like);
if (requestCode == 1 && resultCode == 2) {
String acquireData = like.getStringExtra("like");
Intent intent = getIntent();
String name= getIntent().getStringExtra("name");
Toast.makeText(this, "姓名:"+name+acquireData+"Android", Toast.LENGTH_LONG).show();
}
}
}
4.activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".SecondActivity">
<TextView
android:id="@+id/tv_login"
android:textSize="26sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="欢迎登录:" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_login2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户姓名:"
android:textSize="26sp" />
<TextView
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="name"
android:textSize="26sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_login3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户密码:"
android:textSize="26sp" />
<TextView
android:id="@+id/tv_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="password"
android:textSize="26sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_login4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户性别:"
android:textSize="26sp" />
<TextView
android:id="@+id/tv_sex"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="sex"
android:textSize="26sp" />
</LinearLayout>
<Button
android:id="@+id/btn_survey"
android:text="课程调查"
android:textSize="26sp"
android:layout_gravity="center"
android:layout_width="150dp"
android:layout_height="60dp"
android:onClick="onClick"
/>
</LinearLayout>
5.ThirdActivy.java
这里其实写错名字了,少了个i(ThirActivity.java)。
package cn.itcast.userlogin;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioGroup;
public class ThirdActivty extends Activity implements View.OnClickListener {
private RadioGroup mrg1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third_activty);
mrg1 = (RadioGroup) findViewById(R.id.radioGroup);
Button mbtn_OK = (Button) findViewById(R.id.btn_OK);
mbtn_OK.setOnClickListener(this);
}
@Override
public void onClick(View view){
String like = "";
switch (mrg1.getCheckedRadioButtonId()){
case R.id.radio0:
like = "十分喜欢";
break;
case R.id.radio2:
like = "喜欢";
break;
case R.id.radio3:
like = "不喜欢";
break;
}
Intent intent = new Intent();
intent.putExtra("like", like);
setResult(2, intent);
finish();
}
}
6.activity_third_avtivty.xml
这里是因为上面命名不小心漏了字母,生成的文件名就这样了。上面对的话,这里会是activity_third.xml。这个文件名不影响。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".ThirdActivty"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="你喜欢Android吗?"
android:textSize="26sp"/>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="26sp">
<RadioButton
android:id="@+id/radio0"
android:textSize="26sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="十分喜欢" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="一般般"
android:textSize="26sp" />
<RadioButton
android:id="@+id/radio3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="没兴趣"
android:textSize="26sp"/>
</RadioGroup>
<Button
android:id="@+id/btn_OK"
android:text="OK"
android:textSize="26sp"
android:layout_gravity="center"
android:layout_width="150dp"
android:layout_height="60dp"/>
</LinearLayout>