Autore Topic: Grosso problema sull'uso di Percelable  (Letto 825 volte)

Offline n3tmaster

  • Utente junior
  • **
  • Post: 96
  • Respect: 0
    • Google+
    • lerocchi
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4 - Nexus 7 - PadFone JB
  • Sistema operativo:
    Mac OSX 10.7
Grosso problema sull'uso di Percelable
« il: 22 Marzo 2012, 17:39:45 CET »
0
Salve ragazzi, sono di nuovo alle prese con il passaggio di oggetti da un'activity ad un altra.
Come qualcuno di voi saprà ho creato una classe che estende Parcelable che istanzio per inserire dentro quello che mi serve trasferire. (nella fattispecie qualche Stringa e un oggetto Bitmap).

Il problema mi si presenta quando tendo di implementare nella mia classe l'oggetto Bitmap..in pratica quando l'Activity 1 inserisce la mia classe dentro l'intent (con il putExtra) il software va in freeze, non succede niente..come se si illooppasse e il problema è che dal LogCat non appare niente...


la mia classe, chiamata MapEntity, estende Parcelable e nei metodi writeToParcel e il createFromParcel ho scritto il seguente codice

Codice (Java): [Seleziona]
public static final Parcelable.Creator<MapEntity> CREATOR = new Parcelable.Creator<MapEntity>() {
                public MapEntity createFromParcel(Parcel in) {
                        return new MapEntity(in);
                }

                public MapEntity[] newArray(int size) {
                        return new MapEntity[size];
                }
        };

        @Override
        public int describeContents() {
                //non utilizzato
                return 0;
        }

        @Override
        public void writeToParcel(Parcel arg0, int arg1) {
               
                arg0.writeString(mapFile);

               
                arg0.writeString(extent);
                arg0.writeString(layerStack);
                arg0.writeInt(x0);
                arg0.writeInt(y0);
               
                //arg0.writeByteArray(questaBitmap.writeToParcel(p, flags))
                arg0.writeValue(questaBitmap);
        }      
       
        //costruttore
        private MapEntity(Parcel in) {
                mapFile = in.readString();
                //questaBitmap = (Bitmap)in.readValue(ClassLoader.getSystemClassLoader());
       
        extent = in.readString();
        layerStack = in.readString();
        x0=in.readInt();
        y0=in.readInt();
       
        questaBitmap=(Bitmap)in.readValue(Bitmap.class.getClassLoader());
       
       
    }

come potete notare per la bitmap ho utilizzato il metodo writeValue mentre per la sua lettura ho usato readValue passandogli il ClassLoader della Bitmap

dove potrebbe essere il problema ?

Grazie a tutti per l'aiuto

Leandro Rocchi
Software Developer - Geodatabase Designer

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Grosso problema sull'uso di Percelable
« Risposta #1 il: 22 Marzo 2012, 18:46:18 CET »
0
Molto strano non appaia niente nel LogCat... prova a mettere un po' di Log.d() prima e dopo la chiamata e vedi di preciso dove va in freeze.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline n3tmaster

  • Utente junior
  • **
  • Post: 96
  • Respect: 0
    • Google+
    • lerocchi
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4 - Nexus 7 - PadFone JB
  • Sistema operativo:
    Mac OSX 10.7
Re:Grosso problema sull'uso di Percelable
« Risposta #2 il: 26 Marzo 2012, 10:57:13 CEST »
0
Allora, ho messo un paio di Log nel metodo writeToParcel della mia classe, in particolare ho messo un log prima ed uno dopo la chiamata alla writeValue dove gli passo la mia bitmap. Come potete vedere sembra che lui scriva correttamente tutto.
In maniera analoga avevo messo due log nel metodo che legge dalla Parceled l'oggetto..
Dal log vedo che li non ci arriva proprio e dopo la chiamata alla writeToParcel, il logcat mi da questo errore

!!! FAILED BINDER TRANSACTION !!!

Ecco il log completo

Codice: [Seleziona]
03-26 10:51:54.713: I/sto scrivendo la bitmap in parceled(335): 480
03-26 10:51:54.723: I/sto scrivendo la bitmap in parceled(335): FATTO!
03-26 10:51:54.753: I/ActivityManager(61): Starting: Intent { cmp=it.cnr.ibimet.SmartV/.LayersListActivity (has extras) } from pid 335
03-26 10:51:54.763: I/dalvikvm(61): Jit: resizing JitTable from 1024 to 2048
03-26 10:51:54.843: E/JavaBinder(61): !!! FAILED BINDER TRANSACTION !!!
Leandro Rocchi
Software Developer - Geodatabase Designer

Offline n3tmaster

  • Utente junior
  • **
  • Post: 96
  • Respect: 0
    • Google+
    • lerocchi
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4 - Nexus 7 - PadFone JB
  • Sistema operativo:
    Mac OSX 10.7
Re:Grosso problema sull'uso di Percelable
« Risposta #3 il: 26 Marzo 2012, 11:06:01 CEST »
0
Forse ho risolto... ho guardato un pò su google e ho visto che il problema riguarda un limite nel trasferimento degli oggetti serializzati da un activity ad un altra..probabilmente la mia immagine è troppo grossa... ho provato a comprimerla e adesso funziona
Leandro Rocchi
Software Developer - Geodatabase Designer