Activity组件(三):通过对象实现信息添加及展示
在对组件进行注册时,只注册了EditText,却忘记了Button,导致程序一直闪退
输入信息
点击添加
成功跳转页面,并将数据传递
User.java
package com.example.register; import android.os.Parcel;
import android.os.Parcelable; public class User implements Parcelable {
private String name;
private String age;
private String sex; public User(String name, String age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
} public User() {
} //读取
protected User(Parcel in) {
name = in.readString();
age = in.readString();
sex = in.readString();
} //写入
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(age);
dest.writeString(sex);
} @Override
public int describeContents() {
return 0;
} public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel in) {
return new User(in);
} @Override
public User[] newArray(int size) {
return new User[size];
}
}; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
}
}
UserAddActivity.java
package com.example.register; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast; import androidx.annotation.Nullable; public class UserAddActivity extends Activity {
private EditText mName;
private EditText mAge;
private EditText mSex;
private Button mAddBtn;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_adduser); initView();
initListener(); } private void initListener() {
mAddBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//添加按钮被点击了
handlerAdduser();
}
}); } private void handlerAdduser() {
String name = mName.getText().toString().trim();
if (TextUtils.isEmpty(name)) {
Toast.makeText(this, "输入的姓名为空", Toast.LENGTH_SHORT).show();
return;
}
String age = mAge.getText().toString().trim();
if (TextUtils.isEmpty(age)) {
Toast.makeText(this, "输入的年龄为空", Toast.LENGTH_SHORT).show();
return;
}
String sex = mSex.getText().toString().trim();
if (TextUtils.isEmpty(sex)) {
Toast.makeText(this, "输入的性别为空", Toast.LENGTH_SHORT).show();
return;
}
//跳转并传值给AddShowActivity
Intent intent = new Intent(this, AddShowActivity.class); User user = new User();
//将属性封装到user对象中
user.setName(name);
user.setAge(age);
user.setSex(sex);
intent.putExtra("userKey",user);
startActivity(intent);
} private void initView() {
mName=this.findViewById(R.id.add_name);
mAge=this.findViewById(R.id.add_age);
mSex=this.findViewById(R.id.add_sex);
mAddBtn=this.findViewById(R.id.add_btn);
} }
activity_adduser.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:layout_width="wrap_content"
android:text="添加人员信息"
android:textSize="30sp"
android:layout_marginTop="20dp"
android:layout_gravity="center"
android:layout_height="wrap_content"> </TextView>
<EditText
android:id="@+id/add_name"
android:layout_width="match_parent"
android:text="请输入姓名"
android:layout_gravity="center"
android:layout_height="wrap_content"> </EditText>
<EditText
android:id="@+id/add_age"
android:layout_width="match_parent"
android:text="请输入年龄"
android:layout_gravity="center"
android:layout_height="wrap_content"> </EditText>
<EditText
android:id="@+id/add_sex"
android:layout_width="match_parent"
android:text="请输入性别"
android:layout_gravity="center"
android:layout_height="wrap_content"> </EditText>
<Button
android:id="@+id/add_btn"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:text="添加"
android:layout_height="wrap_content"> </Button>
</LinearLayout>
AddShowActivity.java
package com.example.register; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.widget.TextView; import androidx.annotation.Nullable; public class AddShowActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addshow); TextView nameshow =(TextView) this.findViewById(R.id.add_name_show);
TextView ageshow =(TextView) this.findViewById(R.id.add_age_show);
TextView sexshow =(TextView) this.findViewById(R.id.add_sex_show);
//通过getIntent获取MainActivity传来的intent
Intent intent = getIntent();
if (intent!=null) { User user =intent.getParcelableExtra("userKey");
if (user!=null) { nameshow.setText(user.getName());
ageshow.setText(user.getAge());
sexshow.setText(user.getSex());
}
}
}
}
activity_addshow.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:layout_width="wrap_content"
android:text="添加信息展示"
android:textSize="30sp"
android:layout_gravity="center"
android:layout_height="wrap_content"> </TextView> <TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:text="姓名"
android:textSize="20sp"
android:layout_height="wrap_content"> </TextView>
<TextView
android:id="@+id/add_name_show"
android:layout_width="wrap_content"
android:textSize="25sp"
android:layout_height="wrap_content"> </TextView> <TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:text="年龄"
android:textSize="20sp"
android:layout_height="wrap_content"> </TextView>
<TextView
android:id="@+id/add_age_show"
android:layout_width="wrap_content"
android:textSize="25sp"
android:layout_height="wrap_content"> </TextView> <TextView
android:id="@+id/sex"
android:layout_width="wrap_content"
android:text="性别"
android:textSize="20sp"
android:layout_height="wrap_content"> </TextView>
<TextView
android:id="@+id/add_sex_show"
android:layout_width="wrap_content"
android:textSize="25sp"
android:layout_height="wrap_content"> </TextView> </LinearLayout>
Activity组件(三):通过对象实现信息添加及展示的更多相关文章
- C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)
1.创建一个图形对象的步骤如下(1)得到创建对象的图形数据库:(2)在内存中创建实体类的一个对象:(3)定义一个指向当前数据库的事务处理:(4)打开图形数据库的块表:(5)打开一个存储实体的块表记录( ...
- Android应用程序窗口(Activity)的视图对象(View)的创建过程分析
从前文可知道,每一个Activity组件都有一个关联的Window对象,用来描述一个应用程序窗口.每一个应用程序窗口内部又包含有一个View对象,用来描述应用程序窗口的视图.应用程序窗口视图是真正用来 ...
- Activity组件的UI实现
Activity组件的UI实现需要与WindowManagerService服务和SurfaceFlinger服务进行交互 1. Activity组件在启动完成后,会通过一个类型为Session的Bi ...
- Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8577789 在Android系统中,Activ ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇
原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇 第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列 ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇
原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇 第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是 ...
- {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...
- java对象头信息和三种锁的性能对比
java头的信息分析 首先为什么我要去研究java的对象头呢? 这里截取一张hotspot的源码当中的注释 这张图换成可读的表格如下 |-------------------------------- ...
- Android的Activity组件
本章主题是Activity组件:Activity是Android四大组价之一,其重要地位自然不用说.“Activity是应用程序中可见的交互组件的基类,大致上等同于传统桌面应用个程序开发中的窗体.”( ...
随机推荐
- 每天一点点之 taro 框架 - 生命周期 & state
注意:从vue过来的小朋友要注意,taro直接赋值时不会更新组件的,同react一致更新数据必须调用setState方法,例如:this.setState({name:'张三'}) 1.render函 ...
- 【LeetCode】解数独
做题之前先复习下[STL中的Tuple容器] 我们知道,在Python中,大家都知道tuple这个概念,是一个只读的元素容器,容器内的元素数据类型可以不同,而在CPP中大部分的容器只能储存相同数据类型 ...
- HDU-4857 逃生(逆向拓扑排序)
Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前. ...
- Essay写作的灵魂:内容
在国内大家也许不觉得时常要写essay,但在国外留学,时不时就会有一篇essay写作任务下来.而时常写文的同学们应当就会知道一篇文章中的介绍和结论有多么重要,甚至于当导师拿到你的essay,如果摘要没 ...
- 用豆瓣加速安装pandas、numpy、matplotlib(画图)
安装pandas.numpy会同时被安装 #pthony2.x,用豆瓣加速安装pandas pip install -i https://pypi.doubanio.com/simple/ panda ...
- 吴裕雄--天生自然Django框架开发笔记:Django 模型
Django 对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle. Django 为这些数据库提供了统一的调用API. 可以根据自己业务需求选择不同的数据 ...
- redis常用命令--基础
redis默认有个数据库,下标从开始,不支持自定义数据库名字. 使用select index 切换数据库 : select 7 (切换到第八个数据库) dbsize:求当前数据库中键值对的数量. ...
- 读书笔记 - js高级程序设计 - 第五章 引用类型
引用类型 和 类 不是一个概念 用typeof来检测属性是否存在 typeof args.name == "string" 需要实验 访问属性的方法 .号和[] 一般情况下要 ...
- HashMap实现原理(jdk1.7),源码分析
HashMap实现原理(jdk1.7),源码分析 HashMap是一个用来存储Key-Value键值对的集合,每一个键值对都是一个Entry对象,这些Entry被以某种方式分散在一个数组中,这个数 ...
- Python中Opencv和PIL.Image读取图片的差异对比
近日,在进行深度学习进行推理的时候,发现不管怎么样都得不出正确的结果,再仔细和正确的代码进行对比了后发现原来是Python中不同的库读取的图片数组是有差异的. image = np.array(Ima ...