基本程序单元Activity—Activity生命周期之数据传递小程序

一、 实验目的

(1) 掌握Andriod Studio的基本使用方法;
(2) 掌握Andriod Studio中常用的控件及其使用方法;

二、 实验内容

题目:

编写一个数据传递的小程序,要求在第一个界面输入姓名和生日,在第二个界面上显示“XX(姓名)您好,您的星座是XX座”;关闭第二个界面后,第一个界面上也能够显示“您的星座是XX座”。

1.首先,我创建了一个MainActivity和TestSuccessActivity两个Activity。在MainAcitivity中为按钮增加事件,点击第一个界面的按钮跳转到第二个Activity。

1.1 MainActivity.java

package com.example.constellation;

import android.content.Intent;
import android.os.StrictMode;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private EditText et_birthday_month;
    private EditText et_birthday_day;
    private EditText et_name;
    private Button btn_test;
    private TextView tv_result;


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

        et_birthday_month = (EditText) findViewById(R.id.et_birthday_month);
        et_birthday_day = (EditText) findViewById(R.id.et_birthday_day);
        et_name = (EditText) findViewById(R.id.et_name);
        tv_result = (TextView) findViewById(R.id.tv_result);
        btn_test = (Button) findViewById(R.id.btn_test);

        btn_test.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String Name =et_name .getText().toString().trim();
                String month = et_birthday_month.getText().toString().trim();
                String day=et_birthday_day.getText().toString().trim();
                if (!TextUtils.isEmpty(Name) && !TextUtils.isEmpty(Name)) {
                    Intent intent = new Intent(MainActivity.this, TestSuccessActivity.class);
                    intent.putExtra("name", Name);
                    intent.putExtra("month",month);
                    intent.putExtra("day",day);
                    startActivity(intent);
                }
            }
        });
        String Result = getIntent().getStringExtra("result");
        tv_result.setText(Result);
    }
}

1.2 TestSuccessActivity.java

package com.example.constellation;

import android.content.Intent;
import android.os.StrictMode;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private EditText et_birthday_month;
    private EditText et_birthday_day;
    private EditText et_name;
    private Button btn_test;
    private TextView tv_result;


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

        et_birthday_month = (EditText) findViewById(R.id.et_birthday_month);
        et_birthday_day = (EditText) findViewById(R.id.et_birthday_day);
        et_name = (EditText) findViewById(R.id.et_name);
        tv_result = (TextView) findViewById(R.id.tv_result);
        btn_test = (Button) findViewById(R.id.btn_test);

        btn_test.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String Name =et_name .getText().toString().trim();
                String month = et_birthday_month.getText().toString().trim();
                String day=et_birthday_day.getText().toString().trim();
                if (!TextUtils.isEmpty(Name) && !TextUtils.isEmpty(Name)) {
                    Intent intent = new Intent(MainActivity.this, TestSuccessActivity.class);
                    intent.putExtra("name", Name);
                    intent.putExtra("month",month);
                    intent.putExtra("day",day);
                    startActivity(intent);
                }
            }
        });
        String Result = getIntent().getStringExtra("result");
        tv_result.setText(Result);
    }
}
2.在activity_main.xml中布置好界面,其中输入的文本框选择的是EditText组件。布局是线性垂直布局中套用两个线性水平布局的方式。

activity_main.xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView
        android:layout_width="360dp"
        android:layout_height="70dp"
        android:text="数据传递小程序"
        android:textColor="#FFFF00FF"
        android:textSize="50sp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="  姓        名:"
            android:textColor="#FF000000"
            android:textSize="20sp" />

        <EditText
            android:id="@+id/et_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的姓名" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:weightSum="1"
        android:id="@+id/linearLayout2"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="出生日期:"
            android:textColor="#FF000000"
            android:textSize="20dp" />
        <EditText
            android:id="@+id/et_birthday_month"
            android:layout_width="43dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:hint="01"
            android:textColor="#000000"
            android:textSize="25dp"
            android:textStyle="italic" />
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="月"
            android:textSize="20dp"
            android:textColor="#000000"/>
        <EditText
            android:id="@+id/et_birthday_day"
            android:layout_width="43dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:hint="01"
            android:textColor="#000000"
            android:textSize="25dp"
            android:textStyle="italic"/>
        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="日"
            android:textSize="20dp"
            android:textColor="#000000"/>
    </LinearLayout>

    <Button
        android:id="@+id/btn_test"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/linearLayout2"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        android:gravity="center"
        android:text="测         试"
        android:textSize="25dp" />

    <TextView
        android:id="@+id/tv_result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_margin="50dp"
        android:layout_marginLeft="80dp"
        android:layout_below="@+id/test"
        android:textSize="20dp"
        android:textColor="#034969"/>
</LinearLayout>
3.在activity_test_success.xml中定义一个TextView负责显示数据。
activity_test_success.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_selection"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ebebeb"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView
        android:id="@+id/tv_in"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:textSize="20dp" />

    <Button
        android:id="@+id/btn_return"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_in"
        android:layout_marginTop="10dp"
        android:textSize="20sp"
        android:onClick="return"
        android:text="返          回"
        android:textAllCaps="false" />
</RelativeLayout>

4.运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、 实验总结

在这次实验中我学会了在模仿中找寻因版本问题导致的运行错误:

  1. android.support.v7.app.AppCompatActivity不能使用的解决办法
    把原先的import android.support.v7.app.AppCompatActivity;
    改为import androidx.appcompat.app.AppCompatActivity;
  2. 给两个EditText组件和一个按钮组件添加监听事件,当点击按钮时,将日期的值传递到MainActivity中,因为最后传递一个星座,所以生日转化成星座的过程就必须在MainActivity中完成。需要考虑的是,输入的应该是个数字,而不是字符,输出的又是字符,所以需要进行String和int的转化。

四、参考文献

.Android App开发从入门到精通.安辉 编著. 清华大学出版社, 2018.

Tips:

1.android.support.v7.app.AppCompatActivity不能使用的解决办法
2.我运行第一个页面 ,点测试后,导致了运行停止,还不清楚是什么问题,弄半天没有解决,回头再看看。
2.1.关于第二个问题解决方案:是因为我创建了一个Acitivity但是没有在AndroidManifest.xml中添加。
在这里插入图片描述

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.constellation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Constellation">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            
        </activity>   //添加一个创建的Activity 名称即可
        <activity android:name=".TestSuccessActivity">
        </activity>
        
    </application>

</manifest>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值