Android学习之参数传递

在编写Android代码的过程中,我们经常能用到参数传递:
比如在之前我们写的登录界面,我们点击登录之后,不仅是要校验我们的用户名和密码是否正确,同时还要传递参数到下一个界面,就像我们以前写JFrame的时候,从一个窗体跳转到了另外一个窗体,显示新窗体对象的时候,我们总需要将一些数据传到新窗体使用,这时候就需要传参数。

 

首先介绍传参数所要用到的工具————Intent类
Intent类作为从一个界面跳转到另一个界面的工具,也承担着传递参数的作用。
那么首先我们来介绍一下Intent跳转页面的方法:
在一个按钮对应的onClick方法里,我们创建一个Intent对象

 

Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);

 

这是一种创建方法,我们也可以运用Intent的构造方法:

 

Intent intent = new Intent(this,SecondActivity.class);

 

然后,我们只需要调用跳转方法就可以了:

this.startActivity(intent);

 

传参数分为两种:
一、传基本数据类型:
比如说我们这里传一个String字符串

 

this.putExtra("name","tth");

 
这里我们使用的是putExtra(String name, String value)这个方法
里面的参数相当于一个集合,name相当于集合名字,value相当于集合的值。
我们在跳转后的SecondActivity里可以用对应的name来找到我们所需要的值:
在SecondActivity的onCreate方法里,我们可以首先获取intent对象:

 

Intent intent = this.getIntent();

 
然后通过name来取得我们所需要的value:


 

String username = intent.getStringExtra("name");

 

二、传对象:
同样我们使用的是intent对象,同样是putExtra方法
首先我们声明一个Student类,其中包含姓名和年龄两个属性,最最最重要的是,这个类一定要实现序列化接口:java.io.Serializable,否则不能传递这个类的对象。

 

Student stu = new Student("Ted", 21);//实例化stu对象
intent.putExtra("student", stu);//将这个对象通过intent传走

 

注意这里调用的是putExtra(String name, Serializable value)方法。
那么另外一边,我们则进行接受:

 

Student stu = (Student) intent.getSerializableExtra("stu");

 

注意getSerializableExtra(String name)这个方法返回的是Object对象,要将其进行强制转型,才能获取我们需要的对象。

 

其实在putExtra方法里,我们注意到Bundle这个类,其实是通过调用Bundle的putString方法进行传递的,下面就是putExtra方法:

 

public Intent putExtra(String name, String value) {
    if (mExtras == null) {
        mExtras = new Bundle();
    }
    mExtras.putString(name, value);
    return this;
}

 

那么putString方法又是如何的呢,首先调用unparcel进行数据初始化,然后mMap其实就是个HashMap,所以我们这里的传递其实就是一个集合的传递。

 

public void putString(String key, String value) {
    unparcel();
    mMap.put(key, value);
}

 

这就是Android里的参数传递!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值