我想在Android中的两个活动之间传递对象,这引导我进入parcelable类.我不是要尝试转换我当前的类但不了解Parcelable.Creator方法.
这就是我到目前为止所拥有的
public class Account implements Parcelable{
/**
* Declare private variables
*/
private String fName;
private String lName;
private String screenName;
private String email;
private String level;
private int userId;
//private Context myContext;
/**
* Account constructor
*/
public Account(String fName, String lName, String sName, String email, String level, String x) throws Exception{
/**Parse userId into int */
this.userId = Integer.parseInt(x);
/**Select from DB user details */
/**Initialize variables with results */
this.setfName(fName);
this.setlName(lName);
this.setScreenName(sName);
this.setEmail(email);
this.setLevel(level);
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
// TODO Auto-generated method stub
out.writeString(fName);
out.writeString(lName);
out.writeString(screenName);
out.writeString(email);
out.writeString(level);
out.writeInt(userId);
}
// this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
public static final Parcelable.Creator<Account> CREATOR = new Parcelable.Creator<Account>() {
public Account createFromParcel(Parcel in) {
return new Account(in);
}
public Account[] newArray(int size) {
return new Account[size];
}
};
/**
* Getters and setters for all variables from Account class
*/
public int getUserId(){
return userId;
}
public String getScreenName() {
return screenName;
}
public void setScreenName(String screenName) {
this.screenName = screenName;
}
public String getfName() {
return fName;
}
public void setfName(String fName) {
this.fName = fName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getlName() {
return lName;
}
public void setlName(String lName) {
this.lName = lName;
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
use*_*305 11
public static final Parcelable.Creator CREATOR =
new Parcelable.Creator() {
public ObjectB createFromParcel(Parcel in) {
return new ObjectB(in);
}
public ObjectB[] newArray(int size) {
return new ObjectB[size];
}
};
Run Code Online (Sandbox Code Playgroud)
Android需要此字段才能单独或作为数组创建新对象.这也意味着您可以使用默认构造函数来创建对象,并使用另一种方法根据需要对其进行修改.
和http://www.appance.com/tag/parcelable/
您可以使用无硬编码方法轻松创建可打包类, Android studio 4.1.2可以在几秒钟内为您完成!
创建一个新的可分割类:
步骤1:Alt+Enter实现parcelable方法,对于windows和Option+Entermac都按writeToParcel第一次你会发现是空的 -
步骤2:然后你会发现你的班级名称现在是红色的。因此,您需要添加CREATOR类并writeToParcel通过按Alt+EnterWindows 和Option+EnterMac 来填充空白 -
最后,您将看到您的班级现在将是一个完全可分割的班级!
更新现有的可分割类:
步骤 1:如果您需要在现有类中添加一些新字段,那么您需要删除以前的方法和writeToParcel类,并执行名为“创建新的 Parcelable 类”的第一部分中描述的相同步骤describeContentsCREATOR
| 归档时间: |
|
| 查看次数: |
21865 次 |
| 最近记录: |