在我的应用程序中,我从JavaScript获取数据,因为无法将数据作为数组或对象返回,我将其作为String返回。
现在要组织数据我正在创建一个包含ArrayList
和其他字符串变量的类,并且我正在创建我的类对象变量数组以存储多个记录。
public class Data {
ArrayList<String> m_empArrayList = new ArrayList();
ArrayList<String> m_depArrayList = new ArrayList();
String m_time;
String m_duration;
}
Data d = new Data();
在活动之间传递数据的好方法是什么?由于Intent
和ShredPrefrence
用于传递小型数据单元,我在此不予考虑。
答案 0 :(得分:7)
在自定义对象中实施Parcelable
界面,并通过Intent
传输。
以下是Parcelable
对象的示例。
public class MyObject implements Parcelable {
private String someString = null;
private int someInteger = 0;
public MyObject() {
// perform initialization if necessary
}
private MyObject(Parcel in) {
someString = in.readString();
someInteger = in.readInt();
}
public static final Parcelable.Creator<MyObject> CREATOR =
new Parcelable.Creator<MyObject>() {
@Override
public MyObject createFromParcel(Parcel source) {
return new MyObject(source);
}
@Override
public MyObject[] newArray(int size) {
return new MyObject[size];
}
};
// Getters and setters
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(someString);
dest.writeInt(someInteger);
}
}
以下是发生的事情。如果实现Parcelable
接口,则必须创建一个私有构造函数,该构造函数将Parcel
作为参数。 Parcel
保存所有序列化值。
您必须实现名为Parcelable.Creator
的嵌套类CREATOR
,因为Android会在重新创建对象时调用它。
方法describeContents()
仅用于特殊情况。您可以保留原样,返回值为0
。
有趣的操作发生在writeToParcel()
中,顾名思义,您将数据写入Parcel
对象。
现在,您可以直接将自定义对象添加到此示例中的Intent
。
MyObject myObject = new MyObject();
Intent i = new Intent();
i.setExtra("MY_OBJECT", myObject);
// implicit or explicit destination declaration
startActivity(i);
答案 1 :(得分:3)
您可以使用Android中的应用程序类在活动之间传递数据。
这是一个很好的链接.. http://www.helloandroid.com/tutorials/maintaining-global-application-state