CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 4eyes81 con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 7 su 7
Discussione:

passaggio param tra activity

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Question

    passaggio param tra activity

    Ho bisogno del vostro aiuto ragazzi. Ho delle activity che comunicano tra loro, o meglio ho un'activity principale che ne lancia una secondaria,che a sua volta ne lancia un'altra e cosi via. Il problema è che la principale apre una socket con un server e crea dei buffer di lettura e scrittura. Le altre che vengono lanciate successivamente devono andare a scrivere su questi buffer. Estendendo le altre activity come figlie della principale non risolvo il problema. Ho provato allora a creare un intent ed ad aggiungervi degli extra del tipo:

    Intent intent = new Intent(getApplicationContext(), Activity2.class);
    String pkg=getPackageName();
    intent.putExtra(pkg+".mySocket", socket);
    intent.putExtra(pkg+".myWriter", writer);
    intent.putExtra(pkg+".myReader", reader);
    startActivity(i);

    dove però socket,writer e reader sono classi "taroccate" che estendono Serializable (ho letto che per passare un oggetto di tipo non primitivo bisogna per forza implementare l'interfaccia):

    public class NewSocket extends Socket implements Serializable {
    public NewSocket(InetAddress ip, int port) throws IOException {
    super(ip,port);
    }
    }
    public class NewPrintWriter extends PrintWriter implements Serializable {
    public NewPrintWriter(BufferedWriter out, boolean bool) {
    super(out, bool);
    }
    }
    public class NewBufferedReader extends BufferedReader implements Serializable {
    public NewBufferedReader(Reader in) {
    super(in);
    }
    }

    creo il socket e i buffer in questo modo:
    socket = new NewSocket(ipAddress,port);
    reader = new NewBufferedReader(new InputStreamReader(socket.getInputStream()));
    writer = new NewPrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true );

    ma compariva l'errore:

    ...java.lang.RuntimeException: Parcelable encountered IOException reading a Serializable object (name = package.mio.NewBufferedReader)..

    Ho provato infine a salvarli in un Bundle:

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {

    savedInstanceState.putSerializable("Socket", socket);
    savedInstanceState.putSerializable("Writer", writer);
    savedInstanceState.putSerializable("Reader", reader);

    super.onSaveInstanceState(savedInstanceState);
    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);

    socket = (NewSocket) savedInstanceState.getSerializable("Socket");
    writer = (NewPrintWriter) savedInstanceState.getSerializable("Writer");
    reader = (NewBufferedReader) savedInstanceState.getSerializable("Reader");

    }

    ..ma niente da fare:
    java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = package.mio.NewPrintWriter)..

    Non so proprio che pesci pigliare
    Qualcuno riesce a darmi una mano?? Grazie.

  2.  
  3. #2
    Senior Droid


    Registrato dal
    Feb 2010
    Messaggi
    305

    Ringraziamenti
    4
    Ringraziato 17 volte in 17 Posts
    Predefinito

    e se usassi semplicemente delle variabili static?

  4. Il seguente Utente ha ringraziato eafkuor per il post:

    joaocominho (26-08-10)

  5. #3
    Androidiano


    Registrato dal
    May 2009
    Messaggi
    250

    Ringraziamenti
    2
    Ringraziato 30 volte in 23 Posts
    Predefinito

    Io uso metodi e variabili statici per queste cose

  6. Il seguente Utente ha ringraziato BitBerzerkir per il post:

    joaocominho (26-08-10)

  7. #4
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Thumbs up

    Quote Originariamente inviato da eafkuor Visualizza il messaggio
    e se usassi semplicemente delle variabili static?
    Quote Originariamente inviato da BitBerzerkir Visualizza il messaggio
    Io uso metodi e variabili statici per queste cose
    Grazie mille ragazzi per il vostro aiuto! Cosi funziona alla grande ed è molto più semplice. Mi stavo complicando la vita inutilmente..

  8. #5
    Senior Droid


    Registrato dal
    Feb 2010
    Messaggi
    305

    Ringraziamenti
    4
    Ringraziato 17 volte in 17 Posts
    Predefinito

    Figurati! Però ricordati di stare sempre molto attento quando usi variabili e metodi statici

  9. #6
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    2

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Buongiorno a tutti,
    io avrei lo stesso problema, devo far comunicare un'application server tramite socket con un'activity android. Il tutto funziona con una sola activity ma se passo da un'activity all'altra (socket e buffer In/Out static) il socket invia stringhe null. Potresti farmi capire come dichiarare i socket e i buffer static e come richiamarli da un'altra activity? grazie mille

  10. #7
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    2

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Risolto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy