窗口跳转与传递数据
文章目录
- 一、三个基本控件
- 1、标签控件(TextView)
- 2、编辑框控件(EditText)
- 3、按钮控件(Button)
- 二、安卓事件处理机制
- 三、案例演示:实现用户登录功能
- 1、创建安卓用户
- 2、准备背景图片
- 3、基于模板创建登录窗口
- 4、登录窗口布局资源文件
- 5、主窗口布局资源文件
- 6、安卓项目清单文件
- 7、字符串资源文件
- 8、登录窗口功能实现
- (1)声明控件变量
- (2)通过资源标识符获取控件实例
- (3)登录按钮事件处理
- (4)取消按钮事件处理
- 9、启动应用,查看效果
- (1)输入用户名与密码正确的情况
- (2)输入用户名或密码错误的情况
- 四、利用意图启动组件
- 1、使用显式意图启动组件
- 2、使用隐式意图启动组件
- (1)在Java代码创建隐式意图
- 五、利用意图传递数据
- 1、传递单项数据
- 2、传递数据包
- (1)在起始组件通过意图携带数据包
- (2)在目标组件通过意图获取数据包
- 六、案例演示:修改用户登录程序
- 1、修改登录窗口代码
- 2、修改主窗口代码
- 3、启动应用,查看效果
- 4、修改登录窗口代码
- 5、修改主窗口功能代码
- 6、启动应用,测试效果
一、三个基本控件
1、标签控件(TextView)
- 常用属性
| 属性 | 功能 |
|---|---|
| text | 文本内容 |
| textsize | 文本字号,单位:sp |
| layout-height | 高度,单位:dp |
| layout-width | 宽度,单位:dp |
2、编辑框控件(EditText)
- 常用属性
| 属性 | 含义 |
|---|---|
| text | 文本内容 |
| textSize | 文本字号:sp |
| textColor | 文本颜色,#ff0000 - 红色 |
| hint | 提示信息 |
| singleLine | 单行(true or false) |
| layout_height | 高度,单位:dp (wrap_content, match_parent) |
| layout_weight | 宽度,单位:dp (wrap_content, match_parent) |
| inputType | 输入类型(普通文本、密码、邮件……) |
3、按钮控件(Button)
- 常用属性
| 属性 | 含义 |
|---|---|
| text | 文本内容 |
| textSize | 文本字号,单位:sp |
| textColor | 文本颜色,#ff0000 - 红色 |
| background | 背景颜色或背景图片 |
| layout_height | 高度,单位:dp (wrap_content, match_parent) |
| layout_weight | 宽度,单位:dp (wrap_content, match_parent) |

- EditText与Button是兄弟关系,它们的爹是TextView
二、安卓事件处理机制
- 以按钮单击事件处理为例说明安卓事件处理步骤
| 序号 | 任务 |
|---|---|
| 1 | 在界面类里声明按钮控件变量 |
| 2 | 通过findViewById()方法得到按钮实例 |
| 3 | 利用setOnClickListener()方法给按钮注册单击事件监听器 |
| 4 | 实现单击事件监听器接口,采用匿名实现方式 |
| 5 | 在接口的抽象方法里编写事件处理代码 |
三、案例演示:实现用户登录功能
1、创建安卓用户
- 基于
Empty Activity模板创建安卓应用

2、准备背景图片
- 将背景图片background拷贝到drawable目录

3、基于模板创建登录窗口
-
基于
Empty Activity模板创建LoginActivity,要生成对应的布局文件,并且要设置为启动Activity

-
单击【finish】按钮

4、登录窗口布局资源文件
- 登录窗口布局资源文件 -
activity_login.xml

-
将约束布局改为线性布局,并设置相关属性。

-
添加用户标签

-
添加输入用户名的标签和编辑框,但是需要一个水平方向的线性布局把它们框起来

-
添加输入密码的标签和编辑框,但是需要一个水平方向的线性布局把它们框起来

-
添加登录按钮和取消按钮,但是需要一个水平方向的线性布局把它们框起来

| 属性 | 作用 |
|---|---|
| gravity | 用于设置容器的子控件的对齐方式,或控件的内容的对齐方式 |
| orientation | 线性布局的方向(horizontal——横向、vertical——纵向) |
| padding | 内边距,用于设置子控件与父容器边框的距离,或控件的内容与控件边框的距离;(paddingLeft、paddingRight、paddingTop、paddingBottom) |
| layout_margin | 外边距,用于设置控件之间的距离;(layout_marginLeft,layout_marginRight、layout_marginTop、layout_marginBottom) |
5、主窗口布局资源文件
- 主窗口布局资源文件 -
activity_main.xml


6、安卓项目清单文件
- 安卓项目清单文件AndroidManifest.xml,删除MainAcivity元素包含的意图过滤器

7、字符串资源文件
- 在字符串资源文件
strings.xml里定义所需字符串变量


8、登录窗口功能实现
- 登录窗口 -
LoginActivity

(1)声明控件变量
- 两个编辑框变量和两个按钮变量

(2)通过资源标识符获取控件实例
- 通过findViewById()方法获取控件实例(类似于
JavaScript里的getElementById()方法)

(3)登录按钮事件处理
- 给登录按钮注册单击监听器,实现监听器接口,并且编写事件处理代码
- 首先获取用户输入的用户名和密码,然后判断是否正确,弹出不同的吐司

(4)取消按钮事件处理
- 给取消按钮注册单击监听器,实现监听器接口,并且编写事件处理代码
- 单击取消按钮,关闭登录窗口(另外还有一种处理方法,只是清空两个编辑框而不关闭窗口)

9、启动应用,查看效果
- 思考:如果希望用户登录标签与下面的输入用户名编辑隔开一点,应该怎么设置标签的属性?
(1)输入用户名与密码正确的情况
- 用户名:xyx
- 密码:123456

(2)输入用户名或密码错误的情况

- 可以指定两个编辑框的宽度,比如200dp


- 重启应用,查看效果
四、利用意图启动组件
1、使用显式意图启动组件
- 方法一
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent); - 方法二
Intent intent = new Intent();
intent.setClass(FirstActivity.this, SecondActivity.class);
startActivity(intent); - 方法三
Intent intent = new Intent();
ComponentName component = new ComponentName(FirstActivity.this, SecondActivity.class);
intent.setComponent(component);
startActivity(intent);
2、使用隐式意图启动组件
(1)在Java代码创建隐式意图
Intent intent = new Intent();
intent.setAction(“net.hw.ACTION_NEXT”);
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
五、利用意图传递数据
1、传递单项数据
- // 通过意图传递单项数据
intent.putExtra(“username”, strUsername);
intent.putExtra(“password”, strPassword); - 在目标组件通过意图获取单项数据
// 通过意图获取单项数据
String username = intent.getStringExtra(“username”);
String password = intent.getStringExtra(“password”);
2、传递数据包
(1)在起始组件通过意图携带数据包
- // 创建数据包,封装数据
Bundle data = new Bundle();
data.putString(“username”, strUsername);
data.putString(“password”, strPassword); - // 通过意图携带数据包
intent.putExtras(data);
(2)在目标组件通过意图获取数据包
- // 获取意图携带的数据包
Bundle data = intent.getExtras(); - // 从数据包里按键取值获取各项数据
String username = data.getString(“username”);
String password = data.getString(“password”);
六、案例演示:修改用户登录程序
- 功能要求:当登录成功,跳转到主窗口,显示用户名与密码。
1、修改登录窗口代码
- 创建显式意图,利用意图携带数据,按照意图启动目标组件

2、修改主窗口代码
- 接收登录窗口通过意图传递的数据并显示在标签里

3、启动应用,查看效果
4、修改登录窗口代码
- 将多项数据封装成数据包,通过意图传递数据包

5、修改主窗口功能代码
- 通过意图获取数据包,然后从数据包里按键取得各项数据

6、启动应用,测试效果
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
