J'essaie d'envoyer des données d'une activité à une autre via l'intention. Envoi Chaîne ou entier fonctionne parfaitement bien. Mais quand j'ajoute Parecelable objet dans la même intention, il retourne toujours null pour Strings, Entiers et objet. Voici mon code pour définir les données à l'intention.Passing Object renvoie null dans l'intention d'activité
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("SomeText", "sometext");
intent.putExtra("itemId", itemId);
intent.putExtra("someuser",user);
startActivity(intent);
Et dans d'autres activités que je reçois des valeurs comme:
String som = getIntent().getStringExtra("SomeText");
int itemird = getIntent().getIntExtra("itemId", 0);
User user = getIntent().getParcelableExtra("someuser");
J'ai aussi essayé différentes autres solutions que this et this et this
Quelqu'un peut-il ici me suggérer ce que mon erreur est ou une meilleure solution?
C'est donc ma classe Parcelable
public class User implements Parcelable{
private int mData;
private String username;
private String imagePath;
private String userId;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public void setImagePath(String imagePath) {
this.imagePath = imagePath;
}
public String getImagePath() {
return imagePath;
}
public User() {
}
public User(String username, String userId) {
this.username = username;
this.userId = userId;
}
public User(String username) {
this.username = username;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>() {
public User createFromParcel(Parcel in) {
return new User(in);
}
public User[] newArray(int size) {
return new User[size];
}
};
private User(Parcel in) {
mData = in.readInt();
}
}
Vous pouvez rendre votre objet Java personnalisé implémentable Serializable et utiliser putExtra. Si cela n'a pas fonctionné, collez les journaux d'erreurs. –
C'est probablement un problème avec l'implémentation des méthodes d'interface parcelable dans votre classe User. Pouvez-vous poster ces méthodes ici? – aravindsagar
vous devez conserver toutes les propriétés dans 'writeToParcel' et les lire toutes dans le constructeur' User (Parcel in) 'voir ce lien pour améliorer ma moyenne http://stackoverflow.com/questions/21250339/how-to-pass- arraylistcustomeobject-from-one-activity-to-another/21250450 # 21250450 –