Trouble using parcels to send Object of unknown datatype
I asked a question the other day regarding sending an object to an activity using an intent as a parcel but I am unsure how to do it in my situation. I have a variable of type object Object x;
which is set with something like this: x = edit.getText().toString();
and in this instance x becomes a String object but I also have it able to set x as both an Integer and an SQLDate type. Looking at examples of how to send an object as a parcel it seems to me you have to know what the datatype is before hand even for custom datatypes. Any help with this will be greatly appreciated as i'm completely stuck 开发者_如何学Pythonon this.
Flow is:
Object x;
- is created.
x = String object||Integer object||sqldate object
- x is assigned a value
i.putExtra("object", x);
- x is sent through to the next activity after being parcelled.
The requirement on the data you pass inn is that it is serializable in some way, and yes, both String
and Integer
are. Also, if you're using java.sql.Date
, this type inherits util.Date
which in turn inherits Serializable
. The slight "problem" is that Intent.putExtra
does not have an overload that takes Object
as parameter type. Thus, you would have to "know" which data type you want to put:
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);
}
Rather than having an Object
reference that can be one of 3 other different data-types, I'd suggest making a wrapper class that implements Parcelable
that stores the data for you. If you're passing this data around a lot, it will make your life much simpler.
精彩评论