Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Probleme d'intent

Passage d'un Serializable

    6 mai 2012 à 12:56:42

    Bonjour a tous,

    Alors voila mon probleme, j'essaye de passer un objet de ma classe GraphPoints :

    public class GraphPoints implements Serializable {
    
    	ArrayList<Point> graphPoint=null;
    	
    	public GraphPoints(InputStream fis){
    		try{
    		graphPoint=readData(fis);
    		}
    		catch(Exception e){
        		Log.d("read data","erreur");
        	        }
    	}
    


    D'une activité vers mon activité principale(qui l'a appelé).

    J'ai donc procedé comme suit :

    Dans mon activité secondaire :

    Intent intent = new Intent();
    
        	    	 intent.putExtra("carteid",carteid);
    
        	    	 intent.putExtra("graph",graphPoint);
    
        	    	 setResult(RESULT_OK, intent);
    
        			 // retour activité principal
        			 finish();
    


    Dans mon activité principale :

    Intent intent = new Intent(ParkAssistActivity.this, CarPositionActivity.class);
    
    //On démarre Car Position Activity
    startActivityForResult(intent, CODE_RETOUR_CAR_POSI);
    


    ...


    @Override
    
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        	
        	if(requestCode == CODE_RETOUR_CAR_POSI) {// Vérification du code de retour
        		
        		if(resultCode == RESULT_OK) { // Pour eviter la touche retour
        			
        			Log.d("Main","result ok");
        			
        			// On récupére les paramètres de l'intent
        			graphPoint = (GraphPoints) data.getSerializableExtra("graph");			
        			carteid = data.getIntExtra("carteid",R.drawable.cartepark);
        			
       			 	Toast.makeText(getBaseContext(),R.string.save,Toast.LENGTH_SHORT).show();
        
        		}
        	}
        }
    


    Mais je me retrouves avec les codes d'erreurs suivants :

    05-06 10:41:31.269: W/dalvikvm(915): threadid=1: thread exiting with uncaught exception (group=0x40015560)
    05-06 10:41:31.280: E/AndroidRuntime(915): FATAL EXCEPTION: main
    05-06 10:41:31.280: E/AndroidRuntime(915): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = ttu.projet.parkassist.GraphPoints)
    05-06 10:41:31.280: E/AndroidRuntime(915): at android.os.Parcel.writeSerializable(Parcel.java:1176)
    05-06 10:41:31.280: E/AndroidRuntime(915): at android.os.Parcel.writeValue(Parcel.java:1130)
    05-06 10:41:31.280: E/AndroidRuntime(915): at android.os.Parcel.writeMapInternal(Parcel.java:488)
    05-06 10:41:31.280: E/AndroidRuntime(915): at android.os.Bundle.writeToParcel(Bundle.java:1552)
    05-06 10:41:31.280: E/AndroidRuntime(915): at android.os.Parcel.writeBundle(Parcel.java:502)
    05-06 10:41:31.280: E/AndroidRuntime(915): at android.content.Intent.writeToParcel(Intent.java:5474)
    05-06 10:41:31.280: E/AndroidRuntime(915): at android.app.ActivityManagerProxy.finishActivity(ActivityManagerNative.java:1459)
    05-06 10:41:31.280: E/AndroidRuntime(915): at android.app.Activity.finish(Activity.java:3251)

    édit :

    Apres réflexion, j'ai pensé que ma classe Point (dont la classe GraphPoints contient une liste) devais elle aussi être serializable.

    Apres correction je me retrouve avec ces messages d'erreurs :

    05-06 11:50:50.540: I/dalvikvm(1425): threadid=1: stack overflow on call to Ljava/io/DataOutputStream;.writeByte:VI
    05-06 11:50:50.540: I/dalvikvm(1425): method requires 12+20+8=40 bytes, fp is 0x418fa30c (12 left)
    05-06 11:50:50.550: I/dalvikvm(1425): expanding stack end (0x418fa300 to 0x418fa000)
    05-06 11:50:50.550: I/dalvikvm(1425): Shrank stack (to 0x418fa300, curFrame is 0x418fa478)

    05-06 11:50:50.550: D/AndroidRuntime(1425): Shutting down VM
    05-06 11:50:50.550: W/dalvikvm(1425): threadid=1: thread exiting with uncaught exception (group=0x40015560)
    05-06 11:50:50.650: E/AndroidRuntime(1425): FATAL EXCEPTION: main
    05-06 11:50:50.650: E/AndroidRuntime(1425): java.lang.StackOverflowError
    05-06 11:50:50.650: E/AndroidRuntime(1425): at java.io.ObjectOutputStream.writeNull(ObjectOutputStream.java:1640)
    05-06 11:50:50.650: E/AndroidRuntime(1425): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1734)
    05-06 11:50:50.650: E/AndroidRuntime(1425): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
    05-06 11:50:50.650: E/AndroidRuntime(1425): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
    05-06 11:50:50.650: E/AndroidRuntime(1425): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1143)
    05-06 11:50:50.650: E/AndroidRuntime(1425): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:413)
    05-06 11:50:50.650: E/AndroidRuntime(1425): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1241)



    Merci d'avance pour vos réponses.
    • Partager sur Facebook
    • Partager sur Twitter

    [Android] Probleme d'intent

    × 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