在对组件进行注册时,只注册了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组件(三):通过对象实现信息添加及展示的更多相关文章

  1. C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)

    1.创建一个图形对象的步骤如下(1)得到创建对象的图形数据库:(2)在内存中创建实体类的一个对象:(3)定义一个指向当前数据库的事务处理:(4)打开图形数据库的块表:(5)打开一个存储实体的块表记录( ...

  2. Android应用程序窗口(Activity)的视图对象(View)的创建过程分析

    从前文可知道,每一个Activity组件都有一个关联的Window对象,用来描述一个应用程序窗口.每一个应用程序窗口内部又包含有一个View对象,用来描述应用程序窗口的视图.应用程序窗口视图是真正用来 ...

  3. Activity组件的UI实现

    Activity组件的UI实现需要与WindowManagerService服务和SurfaceFlinger服务进行交互 1. Activity组件在启动完成后,会通过一个类型为Session的Bi ...

  4. Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8577789 在Android系统中,Activ ...

  5. ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

    原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇 第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列 ...

  6. ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇

    原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇 第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是 ...

  7. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  8. java对象头信息和三种锁的性能对比

    java头的信息分析 首先为什么我要去研究java的对象头呢? 这里截取一张hotspot的源码当中的注释 这张图换成可读的表格如下 |-------------------------------- ...

  9. Android的Activity组件

    本章主题是Activity组件:Activity是Android四大组价之一,其重要地位自然不用说.“Activity是应用程序中可见的交互组件的基类,大致上等同于传统桌面应用个程序开发中的窗体.”( ...

随机推荐

  1. python--txt文件处理

    1.打开文件的模式主要有,r.w.a.r+.w+.a+ file = open('test.txt',mode='w',encoding='utf-8') file.write('hello,worl ...

  2. vue坑 - vue安装vue-cli报错coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)或者说不支

    $ npm install -g vue-cli npm WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to ...

  3. 【Java Spring 进阶之路 】1.Spring 是什么?

  4. 二十五、CI框架URL辅助函数之base_url函数

    一.在UI根目录新建一个pic目录,里面放一个图片,如下 二.在我们打View里面写入一下代码,base_ur函数返回的是网站根目录,代码见附图: 三.两种写法,显示效果如下: 四.我们查看浏览器的源 ...

  5. 干货|浅谈iOS端短视频SDK技术实现

    短视频SDK主要包含"视频录制"和"视频编辑"这两个核心功能. 视频录制包括:视频采集.美颜.滤镜.摄像头切换.视音频采集参数设置等功能: 视频编辑包括:视频导 ...

  6. 读写锁ReentrantReadWriteLock源代码浅析

    1.简介 并发中常用的ReentrantLock,是一种典型的排他锁,这类锁在同一时刻只允许一个线程进行访问,实际上将并行操作变成了串行操作.在并发量大的业务中,其整体效率.吞吐量不能满足实现的需要. ...

  7. C++ DirectShow读取摄像头后然后保存图像数据

    #include <stdio.h> #include "camerads.h" #include <highgui.h> const char *g_sz ...

  8. 调用约定__stdcall / __cdecl

    __cdecl与__stdcall这两种调用约定之间的主要差别在于由谁来执行对参数的清理工作. 如果是__cdecl,那么主调函数将负责执行清理工作,如果是__stdcall那被调函数将负责执行清理. ...

  9. Java四类八种

    四类: 整数类型,浮点类型,字符型,布尔型 八种: byte,short,int,long,float,double,char,boolean

  10. ArrayList集合的增、删、改、获取和长度

    API : code: package student; import java.util.ArrayList; public class ArrayListDemo { public static ...