J'essaie de passer l'objet de classe SampleParcelable say sampleObj de mon activité ClassA (current) à ClassB (un nouveau), mais lorsque je consigne la valeur des objets, la valeur de l'objet que je crée en ClassA est totalement différent de ce que je reçois en ClassB.Problème de transmission d'une instance de même classe d'une activité à une autre
ClasseA: -
public class ClassA extends Activity
{
private SampleParcelable sampleObj;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
sampleObj = new SampleParcelable();
Log.d("Actual Reference Value", "\t" + sampleObj);
Intent terminateActivity = new Intent(ClassA.this, ClassB.class);
terminateActivity.putExtra("SampleValue", sampleObj);
SampleParcelable readbackCi = terminateActivity.getParcelableExtra("SampleValue");
Log.d("Retrieved Value", "\n\n\t" + readbackCi);
}
}
ClassB: -
public class ClassB extends Activity
{
private SampleParcelable newSampleObj;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
try {
Intent intentObj = getIntent();
Log.d("Intent Value", "intent: " + intentObj.toString());
Log.d("Extra Values", "extras: " + intentObj.getExtras());
newSampleObj = (SampleParcelable) intentObj.getParcelableExtra("SampleValue");
Log.d("New Value", " " + newSampleObj.toString());
} catch (Exception e) {
Log.d("Exception in main", e.toString());
}
}
}
SampleParcelable: -
public class SampleParcelable implements Parcelable
{
public SampleParcelable(Parcel in) {
in.readParcelable(SampleParcelable.class.getClassLoader());
}
public SampleParcelable() {
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
}
public static final Parcelable.Creator<SampleParcelable> CREATOR = new Parcelable.Creator<SampleParcelable>() {
public SampleParcelable createFromParcel(Parcel in) {
return new SampleParcelable(in);
}
public SampleParcelable[] newArray(int size) {
return new SampleParcelable[size];
}
};
}
Après le débogage je suppose, je sais 1 raison pour laquelle mes valeurs d'objet sont différentes, parce que lors de la récupération d'objet dans ClassB en utilisant getParcelableExtra() à ce moment ma classe SampleParcelable createFro La méthode mParcel est appelée qui crée en interne un nouvel objet. J'ai peut-être tort.
Je ne reçois aucune solution pour cela, je veux juste le même objet dans ma nouvelle classe afin que je puisse accéder à certaines valeurs en utilisant cet objet qui ont été définies dans mon activité ClassA.
Merci à l'avance
Merci beaucoup Ramesh pour répondre. J'ai essayé de mettre en œuvre votre chemin, mais après la ligne putExtra (où j'ajoute mon objet parcelable) quand j'appelle startactivity à ce moment-là, il me donne une exception RuntimeException "Colis: impossible de marshaler la valeur @ 435a71d0". Peux-tu me dire comment surmonter cette exception? –
Rachna