一、实验目的

1.理解Activity的生命周期

2.掌握Intent的作用及应用 

3.设计使用Intent启动Activity并实现信息传递

二、实验过程

(一)Activity跳转与信息传递

    1、在前面实验创建的UserLogin应用中,添加新Activity“SecondActivity”及相应的布局文件 “activity_second.xml”

     

activity java开发_android studio

 

activity java开发_android_02

 

得到SecondActivity和activity_second.xml文件
 

    2、在SecondActivity的布局文件中添加TextView控件,用以显示MainActivity传递来的信息

    

activity java开发_xml_03

 

    3、当用户点击图1 所示MainActivity中的“登录”按钮时,将用户信息传递给SecondActivity , 在SecondActivity中接收并显示用户信息图2

   

activity java开发_android_04

 

初始化控件,对登录界面的“登录”按钮设置监听。

activity java开发_activity java开发_05

 

使用intent显示指定跳转到SecondActivity,使用putExtra()方法,将数据存储在intent对象。

activity java开发_android_06

 

SecondActivity.java文件中,初始化控件。intent对象使用getStringExtra()方法获取存储的姓名、密码和性别信息。再使用控件调用setText()将信息显示在界面。

activity java开发_android studio_07

 

    4、运行并观察结果。

图1 MainActivity提交信息     图2 SecondActivity接收用户              

activity java开发_xml_08

 

activity java开发_xml_09

 

(二)Activity信息回传与处理

    1、在实验创建的UserLogin应用中,添加第三个Activity“ThirdActivty”及相应的布局文件 “activity_third_activty.xml”

activity java开发_xml_10

 

    2、在ThirdActivity的布局文件中添加RadioGroup控件,用以进行用户选择如

图1

activity java开发_xml_11

 

    3、当用户点击图1 所示ThirdActivity中的“OK”按钮时,将用户选择结果信息回传给SecondActivity 。

初始化控件,并对OK按钮设置监听。

activity java开发_xml_12

 

使用intent显示意图。将like值存储进intent参数。使用setResult()方法携带数据进行回传,设置返回码为2。调用finish()方法关闭ThirdActivty。

activity java开发_xml_13

 

    4、修改Activity“SecondActivity”及相应的布局文件 “activity_second.xml”,添加“课程调查”按钮,编写onClick。使用intent显示意图,点击该按钮时启动ThirdActivty并接收用户选择结果。

activity java开发_android studio_14

 

activity java开发_android studio_15

5、在SecondActivity中接收ThirdActivity回传的数据并使用Toaste显示接收到的信息,如

图2

activity java开发_android_16

 

    6、运行并观察结果。

图1 ThirdActivity运行图    图2 SecondActivity 运行图            

activity java开发_activity java开发_17

activity java开发_android_18

三、实验总结


本次实验对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>