之前我们使用Intent传递的一般都是基本类型,可是当有需要去传递一个类对象时,比如说,比如说我们将当前Activity中的一个记录用户信息的一个Uer类如何传递呢,
第一种:一般来说,Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象。
要求被传递的对象必须实现上述2种接口中的一种才能通过Intent直接传递。
第二种:通过SharedPreferences,进行数据的传递与获得。
第一种:
Bundle.putSerializable(Key,Object);
Bundle.putParcelable(Key,Object);
比较常用的是实现Serializable的,下面用serializable为例进行演示:
首先要有这个实现了该接口的User类对象:
public class User implements Serializable{
private int Id;
private String name;
private String password;
//这里省略get,set方法
}
之后在登录的Activity中写代码如下:
Intent intent=new Intent(this,B.class);
Bundle bundle=new Bundle();
bundle.putString("string名", "传输的string");
Intent intent=new Intent(A.this,B.class);
接收端
Intent intent = this.getIntent();
user=(User)intent.getSerializableExtra("user");
以上就可以实现对象的传递。
补充:
如果传递的是List<Object>,可以把list强转成Serializable类型,而且object类型也必须实现了Serializable接口
Intent.putExtras(key, (Serializable)list)
接收
(List<YourObject>)getIntent().getSerializable(key)
第二种:
SharedPreferences
SharedPreferences 用法很简单,如果你想要编辑SharedPreferences中的内容就需要用到editor对象。
在发出方A中
[java]
haredPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
Editor editor = sp.edit();
editor.putInt("string变量名","发出的string内容");
editor.commit();
接收方B
[java]
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(B.this);
string grade = sp.getString("string变量名",“默认值”);