Partage
  • Partager sur Facebook
  • Partager sur Twitter

Parcelable ne marche pas avec les ArrayList ?

    8 décembre 2018 à 0:25:36

    Bonjour,Bonsoir,

    Actuellement j'essaie de créer une application mobile pour mon projet de fin d'année, et je suis bloqué sur une chose.

    Alors j'ai une Activity (NewQuizActivity) ou je creer un objet et j'essai d'envoyer via l'intent l'objet creer a une autre activity (PartsActivity)

    J'ai implementé le Parcelable afin de passer mes données mais mon application crash a chaque fois que j'arrive exactement sur le moment ou j'essai de passer mon object avec parcelable.

    Je montre seulement les bout de code necessaire : 

    NewQuizActivity :

    Quiz quiz = new Quiz(quiz_id, etName.getText().toString().trim(), getDataImg(), Session.getSession().getUser(), new GregorianCalendar(), 3);
    
                                Bundle paquet = new Bundle();
                                paquet.putParcelable("quiz", quiz);
    
                                Intent intent = new Intent(NewQuizActivity.this , PartsActivity.class);
                                intent.putExtras(paquet);
    
                                startActivity(intent);



    PartsActivity : 

    public class PartsActivity extends AppCompatActivity {
    
        private Quiz quiz;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_parts);
    
            this.quiz = getIntent().getExtras().getParcelable("quiz");
    
        }
    }




    Quiz.java 

    package com.quizzy.mrk.quizzy.Entities;
    
    import android.os.Parcel;
    import android.os.Parcelable;
    
    import java.util.GregorianCalendar;
    
    public class Quiz implements Parcelable {
    
        private int id;
        private String name;
        private String media;
        private User user;
        private GregorianCalendar isValidated;
        private double popularity;
    
        public Quiz(int id, String name, String media, User user, GregorianCalendar isValidated, double popularity) {
            super();
            this.id = id;
            this.name = name;
            this.media = media;
            this.user = user;
            this.isValidated = isValidated;
            this.popularity = popularity;
        }
    
        public Quiz(int id, String name, String media, User user, GregorianCalendar isValidated) {
            super();
            this.id = id;
            this.name = name;
            this.media = media;
            this.user = user;
            this.isValidated = isValidated;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getMedia() {
            return media;
        }
    
        public void setMedia(String media) {
            this.media = media;
        }
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    
        public GregorianCalendar getIsValidated() {
            return isValidated;
        }
    
        public void setIsValidated(GregorianCalendar isValidated) {
            this.isValidated = isValidated;
        }
    
        public double getPopularity() {
            return popularity;
        }
    
        public void setPopularity(float popularity) {
            this.popularity = popularity;
        }
    
        @Override
        public int describeContents() {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeInt(this.id);
            dest.writeString(this.name);
            dest.writeString(this.media);
            dest.writeValue(this.user);
            dest.writeValue(this.isValidated);
            dest.writeDouble(this.popularity);
        }
    
        public Quiz( Parcel in){
            this.id = in.readInt();
            this.name = in.readString();
            this.media = in.readString();
            this.user = (User) in.readValue(User.class.getClassLoader());
            this.isValidated = (GregorianCalendar) in.readValue(GregorianCalendar.class.getClassLoader());
            this.popularity = in.readDouble();
        }
    
        public static final Creator<Quiz> CREATOR = new Creator<Quiz>() {
    
            public Quiz createFromParcel(Parcel source){
                return new Quiz(source);
            }
    
            public Quiz[] newArray(int size){
                return new Quiz[size];
            }
        };
    }



    User.java

    package com.quizzy.mrk.quizzy.Entities;
    
    
    import android.os.Parcel;
    import android.os.Parcelable;
    
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    
    public class User implements Parcelable {
    
        private int id;
        private String firstName;
        private String lastName;
        private String username;
        private GregorianCalendar birth_date;
        private String password;
        private String email;
        private String media;
        private ArrayList<User> friendsList;
    
        public User(int id, String firstName, String lastName, String username, GregorianCalendar birth_date, String password, String email, String media, ArrayList<User> friendsList) {
            super();
            this.id = id;
            this.firstName = firstName;
            this.lastName = lastName;
            this.username = username;
            this.birth_date = birth_date;
            this.password = password;
            this.email = email;
            this.media = media;
            this.friendsList = friendsList;
        }
    
        public int getId() {
            return id;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public GregorianCalendar getBirth_date() {
            return birth_date;
        }
    
        public void setBirth_date(GregorianCalendar birth_date) {
            this.birth_date = birth_date;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getMedia() {
            return media;
        }
    
        public void setMedia(String media) {
            this.media = media;
        }
    
        public ArrayList<User> getFriendsList() {
            return friendsList;
        }
    
        public void setFriendsList(ArrayList<User> friendsList) {
            this.friendsList = friendsList;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", firstName='" + firstName + '\'' +
                    ", lastName='" + lastName + '\'' +
                    ", username='" + username + '\'' +
                    ", birth_date=" + birth_date.get(Calendar.DAY_OF_MONTH) + "/" + birth_date.get(Calendar.MONTH) + "/" + birth_date.get(Calendar.YEAR) +
                    ", password='" + password + '\'' +
                    ", email='" + email + '\'' +
                    ", media='" + media + '\'' +
                    '}';
        }
    
        @Override
        public int describeContents() {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeInt(this.id);
            dest.writeString(this.firstName);
            dest.writeString(this.lastName);
            dest.writeString(this.username);
            dest.writeValue(this.birth_date);
            dest.writeString(this.email);
            dest.writeString(this.password);
            dest.writeString(this.media);
            dest.writeValue(this.friendsList);
        }
    
        public User( Parcel in){
            this.friendsList = new ArrayList<User>();
            this.id = in.readInt();
            this.firstName = in.readString();
            this.lastName = in.readString();
            this.username = in.readString();
            this.birth_date = (GregorianCalendar) in.readValue(GregorianCalendar.class.getClassLoader());
            this.email = in.readString();
            this.password = in.readString();
            this.media = in.readString();
            this.friendsList = (ArrayList<User>) in.readValue(User.class.getClassLoader());
        }
    
        public static final Creator<User> CREATOR = new Creator<User>() {
    
            public User createFromParcel(Parcel source){
                return new User(source);
            }
    
            public User[] newArray(int size){
                return new User[size];
            }
        };
    }
    


    Voila en espèrent avoir une réponse, merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      18 décembre 2018 à 9:42:30

      Salut,

      La première étape consiste à clairement identifier le crash de ton application. Que dit la stackstrace ?

      • Partager sur Facebook
      • Partager sur Twitter

      Parcelable ne marche pas avec les ArrayList ?

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown