Autore Topic: Passare oggetti non parcelable fra activity  (Letto 842 volte)

Offline napalm

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
Passare oggetti non parcelable fra activity
« il: 10 Aprile 2013, 11:34:32 CEST »
0
Problema:
devo passare un oggetto di tipo Connection (java.sql) fra l'activity A dove viene inizializzata e l'activity B ( aperta da A) dove si svolgono le query:
- passare la connessione come parametro non si può perché l'oggetto  Connection  non è parcelable
- passare il riferimento di dell'activity A all'activity B per poi usare A.CONN per eseguire le query ma non trovo un sistema per farlo.

Help...

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:Passare oggetti non parcelable fra activity
« Risposta #1 il: 10 Aprile 2013, 11:47:31 CEST »
0
Io mi sono fatto una classe stupidissima per evitare i Parcelable, magari ti può essere utile:

Codice (Java): [Seleziona]
package com.sllib.utils;

import java.util.HashMap;

public final class Communicator {

    // Properties

    private static  HashMap<Integer, Object> messages;

    // Constructors

    private Communicator()
    {
    }

    // Methods

    public static void put(int key, Object message)
    {
        messages.put(key, message);
    }

    public static Object get(int key)
    {
        return messages.get(key);
    }


}

Inserisci un oggetto tramite il metodo Communicator.put passandogli chiave e oggetto, e lo recuperi con il metodo Communicator.get ripassandogli la chiave.
« Ultima modifica: 10 Aprile 2013, 12:03:35 CEST da s1m0 »
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline napalm

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
Re:Passare oggetti non parcelable fra activity
« Risposta #2 il: 10 Aprile 2013, 11:58:50 CEST »
0
Scusa ma definita così non dovrei fare prima il new della classe per poter usare il metodo put? non è una classe statica che posso usare direttamente  Communicator.put() ( infatti il compilatore non me lo dà disponibile quel metodo)

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:Passare oggetti non parcelable fra activity
« Risposta #3 il: 10 Aprile 2013, 12:03:08 CEST »
+1
Sono un babbo, mi sono dimenticato di dichiararli statici  :-P

Modifico il post
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline napalm

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
Re:Passare oggetti non parcelable fra activity
« Risposta #4 il: 10 Aprile 2013, 12:15:21 CEST »
0
Perfetto, grazie :)

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Passare oggetti non parcelable fra activity
« Risposta #5 il: 10 Aprile 2013, 16:56:54 CEST »
0
Sono un babbo, mi sono dimenticato di dichiararli statici  :-P

Modifico il post

Perchè non crearsi un singleton ?

Codice (Java): [Seleziona]
public class Communicator {

        private static Communicator sInstance;
        private static  HashMap<Integer, Object> messages;

        public static Communicator getInstance() {
                if (sInstance == null) {
                        sInstance = new Communicator();
                }
                return sInstance;
        }

        public static Communicator getInstance() {
                return sInstance;
        }

        private Communicator() {
                messages = new HashMap<Integer, Object>();
        }

        public static void put(int key, Object message){
           getInstance().messages.put(key, message);
        }

        public static Object get(int key){
           return  getInstance().messages.get(key);
        }

}

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Passare oggetti non parcelable fra activity
« Risposta #6 il: 10 Aprile 2013, 16:58:49 CEST »
0
perchè non farsi un service che si arrangia lui a fare le chiamate? portarsi in giro oggetti con il rischio di memory leak o di lock mi sa tanto una cavolata...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:Passare oggetti non parcelable fra activity
« Risposta #7 il: 10 Aprile 2013, 17:15:08 CEST »
0
Perchè non crearsi un singleton ?

Codice (Java): [Seleziona]
public class Communicator {

        private static Communicator sInstance;
        private static  HashMap<Integer, Object> messages;

        public static Communicator getInstance() {
                if (sInstance == null) {
                        sInstance = new Communicator();
                }
                return sInstance;
        }

        public static Communicator getInstance() {
                return sInstance;
        }

        private Communicator() {
                messages = new HashMap<Integer, Object>();
        }

        public static void put(int key, Object message){
           getInstance().messages.put(key, message);
        }

        public static Object get(int key){
           return  getInstance().messages.get(key);
        }

}

Che vantaggi porta il singleton in questo caso?

perchè non farsi un service che si arrangia lui a fare le chiamate? portarsi in giro oggetti con il rischio di memory leak o di lock mi sa tanto una cavolata...

Beh finchè tieni in memoria pochi oggetti o non tratti con i thread la classe fa il suo sporco lavoro. Per le mie esigenze bastava e avanzava  :-)
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Passare oggetti non parcelable fra activity
« Risposta #8 il: 10 Aprile 2013, 17:24:36 CEST »
0
beh, un oggetto connection lo vedo abbastanza delicato...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia