基本程序单元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;@Overrideprotected 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() {@Overridepublic 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;@Overrideprotected 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() {@Overridepublic 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"><TextViewandroid:layout_width="360dp"android:layout_height="70dp"android:text="数据传递小程序"android:textColor="#FFFF00FF"android:textSize="50sp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="8dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="  姓        名:"android:textColor="#FF000000"android:textSize="20sp" /><EditTextandroid:id="@+id/et_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入您的姓名" /></LinearLayout><LinearLayoutandroid: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"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:text="出生日期:"android:textColor="#FF000000"android:textSize="20dp" /><EditTextandroid: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" /><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:text="月"android:textSize="20dp"android:textColor="#000000"/><EditTextandroid: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"/><TextViewandroid: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><Buttonandroid: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" /><TextViewandroid: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"><TextViewandroid:id="@+id/tv_in"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#000000"android:textSize="20dp" /><Buttonandroid: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"><applicationandroid: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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[JavaWeb-HTML]HTML标签_图片标签

图片标签&#xff1a; * img&#xff1a;展示图片* 属性&#xff1a;* src&#xff1a;指定图片的位置* 代码&#xff1a;<!--展示一张图片 img--><img src"image/jingxuan_2.jpg" align"right" alt"古镇" width"500" height…

Asp.Net Core+Dapper开发直播平台!

现在直播大热&#xff0c;从游戏直播到直播带货&#xff0c;这几年都是最热门的了。教育直播、视频会议、云点播等各种基于直播构建的业务模式&#xff0c;让众多企业也都开始配备自己的直播平台。14年在公司带队做了个游戏直播平台&#xff0c;疫情期间在家重构了下项目&#…

2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)C题 图墙+拉格朗日四平方数和定理

题意&#xff1a; 其实就是问一个数字能不能表示成5个正平方数的和. 题目&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/problem/220347 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#x…

Magicodes.IE 在100万数据量下导入导出性能测试

原文作者&#xff1a;HueiFeng前言目前Magicodes.IE更新到了2.2.3&#xff0c;感谢大家的支持&#xff0c;同时建议大家在使用过程中如果遇到一些问题或者说需要一些额外的功能可以直接提issues&#xff0c;当然更建议大家提PR。‍近期更新2020.05.24 【Nuget】版本更新到2.2.2…

2018 蓝桥杯省赛 A 组模拟赛(一)数列求值+推导

题目&#xff1a; 对于一个含有 n2个元素的数列&#xff0c;A0、A1、……、An1A_{0}、A_{1}、……、A_{n1}A0​、A1​、……、An1​ &#xff0c;满足这样的递归公式 AiAi−1Ai12−CiA_{i}\frac{A_{i-1}A_{i1}}{2}-C_{i}Ai​2Ai−1​Ai1​​−Ci​ 现在我们知道 A0、An1A_{0}、…

[JavaWeb-HTML]HTML文本标签

文本标签&#xff1a;和文本有关的标签 * 注释&#xff1a;<!-- 注释内容 -->* <h1> to <h6>&#xff1a;标题标签* h1~h6:字体大小逐渐递减* <p>&#xff1a;段落标签* <br>&#xff1a;换行标签* <hr>&#xff1a;展示一条水平线* 属性&…

我的『MVP.Blazor』快速创建与部署

‍最近一直在录Blog.Core相关的操作视频&#xff0c;也没有研究过什么新的东西&#xff0c;公司也各种项目迭代&#xff0c;特别是从Fwk迁移到NetCore&#xff0c;真的是不是一个容易的事&#xff0c;闲的时候&#xff0c;为了歇歇脑子&#xff0c;就抽出时间简单看了看又有哪些…

2018 蓝桥杯省赛 B 组模拟赛(一) 封印之门+最短路径之Floyd

题目&#xff1a; 蒜头君被暗黑军团包围在一座岛上&#xff0c;所有通往近卫军团的路都有暗黑军团把手。幸运的是&#xff0c;小岛上有一扇上古之神打造的封印之门&#xff0c;可以通往近卫军团&#xff0c;传闻至今没有人能解除封印。 封印之门上有一串文字&#xff0c;只包…

.NET IDE Rider公布2020.2路线图

跨平台 .NET IDE Rider 近日公布了 2020.2 的路线图&#xff0c;介绍了目前正在开发的一些特性&#xff0c;并表示其中一些可能在接下来的版本中出现。主要包括&#xff1a;Windows 上的 .NET Core 后端&#xff1a;Rider 2020.1 已在 macOS 和 Linux 上的 .NET Core 上运行 Re…

[JavaWeb-HTML]HTML标签_文件标签

文件标签&#xff1a;构成html最基本的标签 * html:html文档的根标签* head&#xff1a;头标签。用于指定html文档的一些属性。引入外部的资源* title&#xff1a;标题标签。* body&#xff1a;体标签* <!DOCTYPE html>&#xff1a;html5中定义该文档是html文档

天梯赛模拟 链表去重 (25 分)

题目&#xff1a; 给定一个带整数键值的链表 L&#xff0c;你需要把其中绝对值重复的键值结点删掉。即对每个键值 K&#xff0c;只有第一个绝对值等于 K 的结点被保留。同时&#xff0c;所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15&#xff…

字符串太占内存了,我想了各种奇思淫巧对它进行压缩

一&#xff1a;背景1. 讲故事在我们的一个全内存项目中&#xff0c;需要将一家大品牌店铺小千万的trade灌入到内存中&#xff0c;大家知道trade中一般会有订单来源,省市区 &#xff0c;当把这些字段灌进去后&#xff0c;你会发现他们特别侵蚀内存&#xff0c;因为都是字符串类型…

[JavaWeb-HTML]HTML标签_表格标签

表格标签&#xff1a; * table&#xff1a;定义表格* width&#xff1a;宽度* border&#xff1a;边框* cellpadding&#xff1a;定义内容和单元格的距离* cellspacing&#xff1a;定义单元格之间的距离。如果指定为0&#xff0c;则单元格的线会合为一条、* bgcolor&#xff1a…

玩转二叉树 (25 分) 知中序遍历和前序遍历,求做个镜面反转后的层序遍历

题目&#xff1a; 给定一棵二叉树的中序遍历和前序遍历&#xff0c;请你先将树做个镜面反转&#xff0c;再输出反转后的层序遍历的序列。所谓镜面反转&#xff0c;是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式&#xff1a; 输入第一行给…

[JavaWeb-HTML]HTML标签_语义化标签

语义化标签&#xff1a; 语义化标签:html5中为了提高程序的可读性&#xff0c;提供了一些标签。1. <header>&#xff1a;页眉2. <footer>&#xff1a;页脚

使用dotnet Cli向nuget发布包

长话短说&#xff0c; 今天分享如何在nuget.org创建并发布.NET Standard package。前置安装勾选.NET Core开发套件的Visual Studio; 安装dotnet Cli从VS2017开始&#xff0c;dotnet Cli已经自动在.NET开发套件中被安装&#xff1b;使用SDK-style format&#xff08;SDK属性&…

STL中vector建立最大堆和最小堆

1.堆的概念&#xff1a; 堆是一种非线性结构&#xff0c;可以把堆看作一个数组&#xff0c;也可以被看作一个完全二叉树&#xff0c;通俗来讲堆其实就是利用完全二叉树的结构来维护的一维数组按照堆的特点可以把堆分为大顶堆和小顶堆 大顶堆&#xff1a;每个结点的值都大于或…

结合 AOP 轻松处理事件发布处理日志

结合 AOP 轻松处理事件发布处理日志Intro前段时间&#xff0c;实现了 EventBus 以及 EventQueue 基于 Event 的事件处理&#xff0c;但是没有做日志&#xff08;EventLog&#xff09;相关的部分&#xff0c;原本想增加两个接口&#xff0c; 处理事件发布日志和事件处理日志&…

[JavaWeb-HTML]HTML标签_块标签

div和span&#xff1a; * div:每一个div占满一整行。块级标签* span&#xff1a;文本信息在一行展示&#xff0c;行内标签 内联标签