Java 使用包裹发送未知数据类型的对象时出现问题
前几天我问了一个问题,关于将意图作为包裹发送到活动,但我不确定在我的情况下如何发送。我有一个objectJava 使用包裹发送未知数据类型的对象时出现问题,java,android,parcelable,Java,Android,Parcelable,前几天我问了一个问题,关于将意图作为包裹发送到活动,但我不确定在我的情况下如何发送。我有一个objectobjectx类型的变量设置如下:x=edit.getText().toString()
objectx类型的变量代码>设置如下:x=edit.getText().toString()在这个例子中,x变成了一个字符串对象,但我也可以将x设置为整数和SQLDate类型。查看如何将对象作为包裹发送的示例,在我看来,您必须事先知道数据类型是什么,即使对于自定义数据类型也是如此。任何与此相关的帮助都将不胜感激,因为我完全被困在这个问题上
流量为:
对象x代码>-已创建
x=String对象| | Integer对象| | sqldate对象
-x被赋值
i.putExtra(“对象”,x)代码>-x在打包后被发送到下一个活动。对传递到inn的数据的要求是,它可以以某种方式序列化,是的,String
和Integer
都可以。此外,如果您正在使用,则此类型将继承,而该类型又将继承。轻微的“问题”是Intent.putExtra
没有将对象
作为参数类型的重载。因此,您必须“知道”要放置的数据类型:
if (goingToUseStringObject...)
{
// use the CharSequence overload
i.putExtra("object", stringObject);
}
else if (goingToUseIntegerObject...)
{
// use the int overload
i.putExtra("object", integerObject);
}
else if (goingToUseDateObject...)
{
// use the Serializable overload
i.putExtra("object", dateObject);
}
与其让对象
引用可以是其他三种不同的数据类型之一,我建议创建一个包装器类,实现为您存储数据的Parcelable
。如果您经常传递这些数据,这将使您的生活更加简单。我在某个地方读到过一篇文章,其中有相当大的开销,您认为值得将日期对象作为字符串发送,然后在下一个活动中重新转换它吗?我只需要存储dd/MM/yyyy,这样我就不会为失去时间而烦恼。@SamRowley-我不知道它是否有那么大。但是可以肯定的是,仅序列化您需要的内容肯定是最快的选择。但是,对于所有与性能相关的问题,不要进行预优化。如果测试显示存在巨大差异,那么就去做吧。如果没有,请做最简单的事情。谢谢你花时间回答我的问题。