博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android-Activity间传递数据
阅读量:3944 次
发布时间:2019-05-24

本文共 4391 字,大约阅读时间需要 14 分钟。

2.1 启动页面自动跳转,并将启动页面的标题文字传递给其他页面

  • 2.1.1 我们把昨天项目中的按钮先删除掉,并为TextView添加一个id属性

    image.png

  • 2.1.2 在StartActivity中把昨天设置的按钮监听器代码删掉,并填写新的代码

    public class StartActivity extends AppCompatActivity {
    Handler mHandler = new Handler(); // 创建一个 Handler对象 @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); // 获取布局文件中的 TextView控件 TextView textView = findViewById(R.id.title_text); // 获取 TextView中的标题 final String title = textView.getText().toString(); // 发送一个可执行对象 mHandler.postDelayed(new Runnable() {
    @Override public void run() {
    // 跳转到 MainActivity Intent intent = new Intent(StartActivity.this, MainActivity.class); // 将标题以键值对的形式存入intent意图中 intent.putExtra("title", title); startActivity(intent); } }, 3000);// 3秒后跳转 }}

    什么是 ?

    postDelayed(Runnable, long) : 介绍:

    传参:postDelayed中需要传两个参数,一个是Runnable对象,一个是以毫秒为单位的时间

    作用:postDelayed经常被用于延时任务,或者定时器。

    用法:

    1. 创建一个Handler对象;

    2. 创建一个Runnable对象;

    3. Handler.postDelayed(runnable, 1000)

    如果需要清除使用这个方法:Handler.removeCallbacks(runnable); // 清除定时器

  • 2.1.3 在 MainActivity中取到 StartActivity中传递过来的标题

    public class MainActivity extends AppCompatActivity {
    @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = getIntent(); if (intent != null) {
    // 获取 StartActivity中保存的键,通过键即可拿到值 String title = intent.getStringExtra("title"); Toast.makeText(this, title, Toast.LENGTH_SHORT).show(); } }}
  • 2.1.4 预览效果

    android-intent2.gif


2.2 传递对象

  • 2.2.1 新建一个UserInfo类,并实现 Serializable接口

    image.png

    public class UserInfo implements Serializable {
    private String mUsername; private Integer mAge; public UserInfo() {
    } public UserInfo(String mUsername, Integer mAge) {
    this.mUsername = mUsername; this.mAge = mAge; } public String getmUsername() {
    return mUsername; } public void setmUsername(String mUsername) {
    this.mUsername = mUsername; } public Integer getmAge() {
    return mAge; } public void setmAge(Integer mAge) {
    this.mAge = mAge; }}
  • 2.2.2 在StartActivity中创建UserInfo对象,并存入Intent中

    public class StartActivity extends AppCompatActivity {
    Handler mHandler = new Handler(); // 创建一个 Handler对象 UserInfo mUserInfo = new UserInfo("小明", 18); @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); // 获取布局文件中的 TextView控件 TextView textView = findViewById(R.id.title_text); // 获取 TextView中的标题 final String title = textView.getText().toString(); mHandler.postDelayed(new Runnable() {
    @Override public void run() {
    // 跳转到 MainActivity Intent intent = new Intent(StartActivity.this, MainActivity.class); // 将标题以键值对的形式存入intent意图中 intent.putExtra("title", title); // 将 UserInfo存入 intent中 intent.putExtra("userInfo", mUserInfo); startActivity(intent); } }, 3000);// 3秒后跳转 }}
  • 2.2.3 在 MainActivity 中取到 StartActivity 中传递过来的 UserInfo 对象

    public class MainActivity extends AppCompatActivity {
    @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = getIntent(); if (intent != null) {
    // 获取 StartActivity中保存的键,通过键即可拿到值 String title = intent.getStringExtra("title"); UserInfo userInfo = (UserInfo) intent.getSerializableExtra("userInfo"); Toast.makeText(this, "名字:" + userInfo.getmUsername() + " , 年龄:" + userInfo.getmAge(), Toast.LENGTH_SHORT).show(); } }}
  • 2.2.4 预览效果

    android-intent3.gif


2.3 回传数据

  • 2.3.1 在activity_main.xml文件中添加一个Button

    image.png

  • 2.3.2 在 MainActivity 中为 Button设置事件监听器

    image.png

  • 2.3.3 在 StartActivity中接受回传过来的intent

    intent-back.PNG

  • 2.3.4 效果预览

    android-intent4.gif


本节学习内容就到这里了。学习地址:https://www.bilibili.com/video/av89274094

转载地址:http://hziwi.baihongyu.com/

你可能感兴趣的文章
vncsever-centos&debian
查看>>
华为snmp模板
查看>>
kvm&xen挂载镜像文件
查看>>
华为路由器配置NAT使内网用户通过外网IP地址方式访问内网服务器示例
查看>>
virt命令
查看>>
15个保障服务器安全的方法:
查看>>
在VMware Workstation 中部署VCSA6.5
查看>>
openstack&ceph
查看>>
ME60 双机热备 奇偶mac负载分担
查看>>
oracle11G安装en
查看>>
关于丢失或者损坏etc/fstab文件后
查看>>
VMware-ESXi-6.5 集成第三方驱动方法
查看>>
Oracle RAC on vSphere 安装手册v2
查看>>
V2V迁移
查看>>
BFD
查看>>
docker网络
查看>>
锐捷交换机的多对多镜像口
查看>>
Linux系统修改编码
查看>>
word文档不能显示图片的处理
查看>>
linux的多桌面环境Xephyr
查看>>