La transmission des données par le biais de l'intention à l'aide de Serializable
J'ai mis en place ma classe avec serializable, mais il ne fonctionne toujours pas.
C'est ma classe:
package com.ursabyte.thumbnail;
import java.io.Serializable;
import android.graphics.Bitmap;
public class Thumbnail implements Serializable {
private static final long serialVersionUID = 1L;
private String label = "";
private Bitmap bitmap;
public Thumbnail(String label, Bitmap bitmap) {
this.label = label;
this.bitmap = bitmap;
}
public void set_label(String label) {
this.label = label;
}
public String get_label() {
return this.label;
}
public void set_bitmap(Bitmap bitmap) {
this.bitmap = bitmap;
}
public Bitmap get_bitmap(){
return this.bitmap;
}
// @Override
// public int compareTo(Thumbnail other) {
// if(this.label != null)
// return this.label.compareTo(other.get_label());
// else
// throw new IllegalArgumentException();
// }
}
C'est ce que je veux passer.
List<Thumbnail> all_thumbs = new ArrayList<Thumbnail>();
all_thumbs.add(new Thumbnail(string, bitmap));
Intent intent = new Intent(getApplicationContext(), SomeClass.class);
intent.putExtra("value", all_thumbs);
Mais encore il ne fonctionne pas. Je ne sais pas comment utiliser Parcelable, j'ai donc utiliser ce lieu.
Bitmap
classe n'implémente pasSerializable
. Vous devez utiliserParcelable
ici. Cependant, ce n'est pas une bonne idée de passer des bitmaps à l'aide deParcelable
...- qu'en tableau d'octets? il implémente Serializable?
- oui, mais être prudent avec les objets de grande taille. L'intention a une limite de taille pour les extras
- ou vous pouvez ajouter transitoire avant bitmap comme ce
private transient Bitmap bitmap;
Vous devez vous connecter pour publier un commentaire.
Essayer de passer le serializable liste à l'aide de Bundle.Serializable:
Et dans SomeClass de l'Activité de l'obtenir comme:
Ce code peut vous aider à:
D'avoir les données. Créer de nouvelles Activités avec supplément:
L'obtention de données de nouvelle activité:
J'ai étendu ρяσѕρєя K, en réponse à rendre le code plus complet et réaliste. Donc, lorsque vous avez fini de remplir votre " all_thumbs liste, vous devez placer son contenu dans le bundle et puis dans l'intention:
Afin d'obtenir les extras de l'intention, vous avez besoin de:
Avantage de
Serializable
est sa simplicité. Cependant, je vous recommande d'envisager l'utilisation deParcelable
méthode lorsque vous avez besoin de transférer beaucoup de données, parce queParcelable
est spécialement conçu pour Android et il est plus efficace queSerializable
. Vous pouvez créerParcelable
classe à l'aide de:Dans SomeClass.java
Vous avez besoin pour créer un Bundle et ensuite utiliser putSerializable:
De L'Envoi Des Données:
D'abord faire votre serializable données par mettre en œuvre
Serializable
à votre classe de donnéesPuis le mettre dans l'intention
La Réception Des Données:
Créer votre objet personnalisé et Sérialisable. Ensuite, vous pouvez utiliser
intent.putExtra("package.name.example", <your-serializable-object>)
.Dans la deuxième activité, vous l'avez lu à l'aide de
getIntent().getSerializableExtra("package.name.example")
Sinon, suivez cette et cette page.
Dans kotlin:
Objet de la classe implémente Serializable:
Au point où l'objet de l'envoi:
Au fragment, où nous voulons obtenir notre objet:
N'oubliez pas de Sérialisable, dans chaque classe, votre objet comme une liste d'objets. Le reste de votre application crash.
Exemple:
Alors la Maison doit implémente Serializable de la manière suivante :
Ensuite, vous pouvez utiliser:
Et recupérer avec: