将不可序列化的数据发送到新的Activity

时间:2013-04-26 13:44:01

标签: java android android-intent android-activity serialization

我没有可序列化的数据,我必须将其发送给其他Activity。 我尝试使用Intent,但这是不可能的。

Intent intent = new Intent(v.getContext(), UserDetailActivity.class);
intent.putExtra("class", user);
v.getContext().startActivity(intent);

如何将之前Activity的数据发送到新Activity

4 个答案:

答案 0 :(得分:1)

我认为你不能这样做,因为ParseUser需要实现Parcelable或Serializable。您可能无法修改类,因此您可以这样做:

  1. 创建一个包装类并重新构建ParseUser对象。这个包装器需要实现Parcelable或Serializable。这可能并不总是有效。

  2. 在此处扩展Application类,您可以创建一个ParseUser对象的实例。

  3. 使用单身人士。

  4. 1可能很棘手,2和3更容易。

答案 1 :(得分:0)

你可以用两种方式做到这一点

1.你这样做的方式是通过意图传递数据

要使用通过此方法发送的数据,请在您要向其传递数据的第二个活动中使用getIntent()方法,这将为您提供意图对象,并且从该方法可以重新传递传递密钥的数据

答案 2 :(得分:0)

您可以使用Google Gson lib将对象转换和解析为JSON格式的字符串,并将它们作为普通的Java字符串传递。

将对象转换为JSON字符串:

ParseUser user=new ParseUser();
Gson gson = new Gson();
String json = gson.toJson(user); 

将其从JSON String解析回object:

ParseUser user = gson.fromJson(json, ParseUser.class); 

然而,一个不相关的考虑因素是将ParseUser传递给另一个Activity是一个好主意。由于库设计不好,ParseUser可能无法序列化,或者因为它不应该以这种方式使用。由于我不使用这个特定的库,我无法为你回答这个问题。

答案 3 :(得分:0)

如果你不能序列化或使对象Parcelable,通过Application对象或静态变量路由它似乎是选项。

您还可以查看我写的这个库(https://github.com/noxiouswinter/gnlib_android/wiki/gnlauncher),以便更轻松地将数据发送到其他活动。它不需要对象进行序列化或实现Parcelable。