j'ai un objet POJO défini comme ceci:Android putSerializable vs PutString
public class MYPOJO implements Serializable {
int myint;
String mystring;
}
puis quand im passer l'info à une activité que je fais ceci:
Intent i = new Intent(this, WearActivity.class);
Bundle b = new Bundle();
MYPojo pojo = new MYPojo();
pojo.mystring="cool";
b.putSerializable("someString", pojo.mystring);//this line is my issue
i.putExtra("coolBundle",b);
startActivityForResult(i, 0);
et de lire le 'someString' supplémentaire je fais:
Bundle b2 = getIntent().getBundleExtra("coolBundle");
b2.getString("someString");
Alors maintenant sur ma question: est-ce qu'il y a vraiment une différence si je fais ce qui suit si si à la fin im toujours appeler pour la récupération b2.getString ("someString"):
b.putString("someString",pojo.mystring)
vs
b.putSerializable("someString",pojo.mystring) ?
Votre POJO devrait probablement implémenter Parcelable. Plus peut être trouvé [ici] (http://stackoverflow.com/a/9323422/3109213 "SO Réponse avec l'exemple") – Stunna
je réalise qu'il devrait mettre en œuvre paracelable pour l'efficacité et pour éviter la réflexion. Mais comme je veux savoir s'il y a des problèmes si j'utilise putString au lieu de putSerializable. C'est juste que j'ai hérité d'un projet n'utilisant pas de parcelable et je veux savoir les décisions de conception. Je les ai vus appeler putSerializable (...) et de le récupérer en faisant getString (...) et cela m'a semblé très étrange et je voulais une explication. Il n'y a pas de collision, les deux façons semblent fonctionner, mais y a-t-il une considération de conception à utiliser? – j2emanue
Eh bien, je crois que vous pouvez passer dans une chaîne, car il s'agit essentiellement d'un tableau de caractères, ce qui lui permet d'être sérialisable. Pour moi, mettre un wrapper autour d'une chaîne met un wrapper autour d'un wrapper. Cela ressemble à un choix de conception, et quelque chose que je ne ferais pas – Stunna