Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向新活动发送不可序列化的数据_Java_Android_Android Intent_Android Activity_Serialization - Fatal编程技术网

Java 向新活动发送不可序列化的数据

Java 向新活动发送不可序列化的数据,java,android,android-intent,android-activity,serialization,Java,Android,Android Intent,Android Activity,Serialization,我没有必须发送到其他活动的可序列化数据。 我试图使用意图,但这是不可能的 Intent intent = new Intent(v.getContext(), UserDetailActivity.class); intent.putExtra("class", user); v.getContext().startActivity(intent); 如何将以前的活动中的数据发送到新的活动 您可以通过两种方式来实现这一点 1.您的操作方式通过intent传递数据 要使用通过此方法发送的数据,请

我没有必须发送到其他
活动
的可序列化数据。 我试图使用
意图
,但这是不可能的

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

如何将以前的
活动
中的数据发送到新的
活动

您可以通过两种方式来实现这一点

1.您的操作方式通过intent传递数据


要使用通过此方法发送的数据,请在要向其传递数据的第二个活动中使用getIntent()方法。这将为您提供intent对象,并且您可以从中接收传递密钥的数据。我不认为您可以这样做,因为ParseUser需要实现可打包或可序列化。您可能无法修改该类,因此可以执行以下操作:

  • 创建包装器类并重新构造ParseUser对象。此包装器需要实现可打包或可序列化。这可能并不总是有效的

  • 在这里扩展您创建的应用程序类,并创建ParseUser对象的实例

  • 使用单件

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

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

    要将对象转换为JSON字符串,请执行以下操作:

    ParseUser user=new ParseUser();
    Gson gson = new Gson();
    String json = gson.toJson(user); 
    
    要将其从JSON字符串解析回对象,请执行以下操作:

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

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

    如果您无法序列化或使对象可打包,则通过应用程序对象或静态变量将其路由似乎是选项


    您还可以查看我编写的这个库(),以简化向其他活动发送数据的过程。它不需要序列化对象或实现Parcelable

    user
    到底是什么?自定义
    User
    类?什么是“User”的类型?您能详细说明什么类型的数据吗?User它是ParseUser。使用您的解决方案,您可以只传递字符串。因此,对于要传递的所有子参数,都需要类似intent.putExtra(“username”,user.getName())的内容。但这是一项艰巨的工作,所以不妨尝试一下@cafebabe1991解决方案!我使用了2,因为1对于Parse SDK是不可能的。3和2是一样的。