我有这个自定义对象,我想传递给另一个Activity:
public class FindRouteOutputForDisplay {
public ArrayList<VertexDisplay> vertexDisplayArrayList;
public ArrayList<Integer> integerArrayList;
}
我试过了,但没有用。
Intent newIntent = new Intent(FirstActivity.this, SecondActivity.class);
FindRouteOutputForDisplay data = getMyData();
newIntent.putExtra("data", data); // Error
startActivity(newIntent);
我应该通过
public ArrayList<VertexDisplay> vertexDisplayArrayList;
public ArrayList<Integer> integerArrayList;
分开一个接一个?有没有办法立刻通过所有这些?
答案 0 :(得分:1)
您可以尝试此解决方案。
public class FindRouteOutputForDisplay implements Serializable{
public ArrayList<VertexDisplay> vertexDisplayArrayList;
public ArrayList<Integer> integerArrayList;
}
Intent newIntent = new Intent(FirstActivity.this, SecondActivity.class);
FindRouteOutputForDisplay data = getMyData();
newIntent.putSerializable("data", data);
startActivity(newIntent);
如果“putSerializable”有任何错误,那么您可以通过这种方式将对象转换为Serializable。
newIntent.putSerializable("data", (Serializable)data);
在您的活动中,只需通过此
获取您的数据FindRouteOutputForDisplay data = getIntent().getSerializable("data");
希望它有所帮助。
答案 1 :(得分:0)
将数据保存在应用程序上下文类中。由于此类在您的应用程序实例中可用,因此您可以从所有活动中获取或设置此类中定义的变量。更多信息here
答案 2 :(得分:0)
改变这个:
startActivity(routeDetailIntent);
致:
startActivity(newIntent);
答案 3 :(得分:0)
您应该使自定义对象实现Parcelable接口:
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
如果您需要其他解决方案,还可以查看here。
答案 4 :(得分:0)
你已经错误地开始了活动。
Intent newIntent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("value", data );
newIntent.putExtras(bundle);
startActivity(newIntent );
答案 5 :(得分:0)
我有一个技巧给你。将Gson添加到您的依赖项中。
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.code.gson:gson:2.2.4'
}
将您的对象转换为Json并将其作为String传送。
String data = new Gson().toJson(getMyData())
在新活动
中将其从字符串转换回来FindRouteOutputForDisplay data = new Gson(stringData, FindRouteOutputForDisplay.class).
答案 6 :(得分:0)
我也遇到了这个问题,所以我正在尝试以下代码:
有目的地传递对象
在开始活动中,我们可以将parcelable对象设置为intent
User user = new User("1", "u", "u", "u");
ArrayList<User> userList = new ArrayList<User>();
Sensor sensor = new Sensor("1", "s", "s", true, user, userList);
intent.putExtra("com.score.senzors.pojos.Sensor", sensor);
在目的地活动中,我们可以从意图附加(捆绑)
获取可分配对象Bundle bundle = getIntent().getExtras();
Sensor sensor = bundle.getParcelable("com.score.senzors.pojos.Sensor")
希望它能帮助你
答案 7 :(得分:0)
您可以将该类设置为静态,并在应用中的任何位置使用它。