[JAVA] Procédures pour transmettre RealmObject à Fragment et comment utiliser Parceler

introduction

Lorsque j'utilisais Realm et que je voulais le transmettre à Fragment, j'ai implémenté Serializable et putSerializable sur Bundle, et il a été interrompu de force avec onPause. J'ai découvert comment le mettre en œuvre en cherchant à savoir s'il pouvait être adopté en premier lieu, alors prenez-en note. Si vous voulez simplement le résoudre, voyez la conclusion.

Chose que tu veux faire

public static Fragment newInstance(SampleRealmObject realmObject) {
    Bundle args = new Bundle();
    args.putParcelable("key", realmObject);
    ...
}

façon

Tout d'abord, RealmObject était une classe de modèle qui ne faisait rien de particulièrement compliqué, alors j'ai pensé que si j'implémentais Serializable, je pourrais mettreSerializable. Ensuite, je l'ai bien réussi et l'application a fonctionné, mais ... Lorsque vous éteignez l'écran ou revenez à l'écran d'accueil

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = io.realm.SampleRealmObjectRealmProxy)
Caused by: java.io.NotSerializableException: io.realm.SampleRealmObjectRealmProxy$SapmleRealmObjectColumnInfo

On m'a dit. Je me suis demandé si Serialize était impossible parce que Proxy était impliqué, et je me suis demandé si Parcelable pouvait aller. Découvrez cet article https://realm.io/jp/docs/java/latest/#parceler Même si la destination du lien est répertoriée, j'ai ajouté la description qui a été honnêtement décrite dans Realm sans la lire

compile "org.parceler:parceler-api:1.0.3"
apt "org.parceler:parceler:1.0.3"

J'ai trouvé cet article lors de ma recherche car il ne fonctionne pas bien http://qiita.com/kazhida/items/affe4488078a2e625d33#%E3%82%A2%E3%83%8E%E3%83%86%E3%83%BC % E3% 82% B7% E3% 83% A7% E3% 83% B3% E3% 83% A9% E3% 82% A4% E3% 83% 96% E3% 83% A9% E3% 83% AA Quand j'ai ajouté la description et l'ai construite, elle a réussi, donc un cas s'est réglé. J'ai pensé, un avertissement a été affiché.

Warning:Using incompatible plugins for the annotation processing: android-apt. This may result in an unexpected behavior.

android-apt n'est pas bon et peut se comporter de manière inattendue. Quand. Ensuite, si vous google, vous trouverez l'article suivant. https://stackoverflow.com/questions/42632662/android-studio-warning-using-incompatible-plugins-for-the-annotation-processing Si vous lisez la meilleure réponse, vous trouverez un exemple de couteau à beurre. Il dit "appliquer le plugin: delete'com.neenbedankt.android-apt '" Lorsque je l'efface et que je l'exécute, j'obtiens une erreur indiquant qu'il n'y a pas d'annotationProcessor. En comparaison, je n'avais pas d'annotationProcessor dans mon code, alors peut-être que c'est aussi dans Parceler? Je suis allé à la page de la bibliothèque et je l'ai trouvé dans gradle lorsque je l'ai cherché. Si vous l'écrivez, il sera complété sans avertissement. L'histoire que la description de Realm n'aurait pas dû être avalée. (Peut-être qu'il y a un bon moyen)

Conclusion

  1. Ajout de la description à build.gradle de l'application
compile 'org.parceler:parceler-api:1.1.9'
annotationProcessor 'org.parceler:parceler:1.1.9'

Cliquez ici pour plus de détails https://github.com/johncarl81/parceler

  1. Ajoutez @Parcel à RealmObject
@Parcel(implementations = SampleRealmObjectRealmProxy.class,
        value = Parcel.Serialization.BEAN,
        analyze = SampleRealmObject.class)
public class SampleRealmObject extends RealmObject {
    ...
}

Cliquez ici pour plus de détails https://realm.io/jp/docs/java/latest/#parceler

  1. Ajoutez Parcels.wrap lors de la mise en place
public static Fragment newInstance(SampleRealmObject realmObject) {
    Bundle args = new Bundle();
    args.putParcelable("key", Parcels.wrap(realmObject));
    ...
}

//Déballer lors de la restauration
SampleRealmObject realmObject = Parcels.upwrap(getArguments().getParcelable("key"));

c'est tout!

Recommended Posts

Procédures pour transmettre RealmObject à Fragment et comment utiliser Parceler
Comment utiliser StringBurrer et Arrays.toString.
Comment utiliser l'égalité et l'égalité (comment utiliser l'égalité)
Comment utiliser l'icône Font Awesome pour ul et li
Comment utiliser des séquences \ t Escape différentes pour Mac et Windows-java
Comment utiliser binding.pry pour afficher le fichier
Comment utiliser OrientJS et OrientDB ensemble
Comment configurer et utiliser kapt
[Ruby] Comment utiliser slice pour les débutants
Comment utiliser les méthodes substring et substr
Comment utiliser @Builder et @NoArgsConstructor ensemble
(Pour les débutants) [Rails] Technologie de gain de temps! Comment installer et utiliser Slim
Comment utiliser le contrôle segmenté et les points à noter
Comment utiliser la portée et le traitement des passes (servist)
[Pour les super débutants] Comment utiliser l'autofocus: vrai
[Java] Comment utiliser la classe Calendar et la classe Date
Réflexion sur la façon d'utiliser Ionic-Native, Hybrid et HTML5 pour la production d'applications mobiles
Comment utiliser Map
Comment utiliser rbenv
Comment utiliser with_option
Comment utiliser fields_for
Comment utiliser la carte
Comment utiliser collection_select
Comment utiliser Twitter4J
Comment utiliser active_hash! !!
Comment utiliser MapStruct
Comment utiliser TreeSet
[Comment utiliser l'étiquette]
Comment utiliser l'identité
Comment utiliser le hachage
Comment utiliser Dozer.mapper
Comment utiliser Gradle
Comment utiliser org.immutables
Comment utiliser java.util.stream.Collector
Comment utiliser VisualVM
Comment utiliser Map
Comment utiliser un tableau pour la clé TreeMap
Comment utiliser Truth (bibliothèque d'assertions pour Java / Android)
[Pour ceux qui créent des portfolios] Comment utiliser font-awesome-rails
Comment utiliser et appliquer la classe JFrame / Canvas de Java
Comment utiliser GitHub pour les super débutants (développement d'équipe)
Explication de Ruby on rails pour les débutants ④ ~ À propos des règles de dénomination et comment utiliser form_Tag ~
Comment utiliser l'API Chain
[Java] Comment utiliser Map
Comment utiliser Queue avec priorité
Comment utiliser les jetons SAS pour les hubs d'événements Azure (Java)
Comment utiliser OpenCV 4 sur Android et afficher la vue en direct de la caméra
[À voir absolument pour l'apprenti ingénieur Java] Comment utiliser l'API Stream
[Rails] Comment utiliser enum
Comment utiliser java Facultatif
Comment utiliser JUnit (débutant)
Comment utiliser @Builder (Lombok)
Comment utiliser la classe Java