我前几天问了一个关于使用意图作为包裹将活动发送到活动的问题,但我不确定如何在我的情况下这样做。我有一个类型为对象Object x;
的变量,它的设置类似于:x = edit.getText().toString();
,在这个例子中,x成为一个String对象,但我也可以将x设置为整数和SQLDate类型。查看如何将对象作为parcel发送的示例在我看来,即使对于自定义数据类型,您也必须知道数据类型是什么。任何对此的帮助将非常感激,因为我完全坚持这一点。
流程是:
Object x;
- 已创建。
x = String object||Integer object||sqldate object
- 为x分配值
i.putExtra("object", x);
- x被分配后发送到下一个活动。
答案 0 :(得分:2)
您传递的数据的要求是它可以以某种方式序列化,是的,String
和Integer
都是。此外,如果您使用的是java.sql.Date
,则此类型会继承util.Date
,而Serializable
会继承{{3}}。轻微的“问题”是Intent.putExtra
没有以Object
作为参数类型的重载。因此,您必须“知道”要放置的数据类型:
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);
}
答案 1 :(得分:1)
我建议创建一个实现Object
的包装类,而不是让Parcelable
引用可以是其他3种不同的数据类型之一,它会为您存储数据。如果您经常传递这些数据,它将使您的生活更加简单。