Problemi con pacchi di inviare Oggetto sconosciuto tipo di dati
-
09-10-2019 - |
Domanda
ho fatto una domanda, l'altro giorno per quanto riguarda l'invio di un oggetto a un'attività utilizzando un intento come un pacco, ma sono sicuri di come farlo nella mia situazione. Ho una variabile di tipo oggetto Object x;
che è impostato con qualcosa di simile: x = edit.getText().toString();
e in questo caso x diventa un oggetto String ma anche capace di x set sia come un intero e un tipo SQLDate. Guardando esempi di come inviare un oggetto come un pacco mi sembra che devi sapere qual è il tipo di dati è prima di mano anche per i tipi di dati personalizzati. Qualsiasi aiuto con questo sarà molto apprezzato come io sono completamente bloccato su questo.
Il flusso è:
Object x;
-. Viene creato
x = String object||Integer object||sqldate object
- x viene assegnato un valore di
i.putExtra("object", x);
-. X viene inviato attraverso l'attività successiva dopo essere parcellizzata ??p>
Soluzione
Il requisito sui dati Pass Inn è che è serializzabile in qualche modo, e sì, sia String
e Integer
sono. Inoltre, se si sta utilizzando java.sql.Date
, il tipo eredita util.Date
che a sua volta eredita Serializable
. Il leggero "problema" è che Intent.putExtra
non ha un sovraccarico che prende Object
come tipo di parametro. Quindi, si dovrebbe "sapere" quale tipo di dati che si desidera mettere:
if (goingToUseStringObject...)
{
// use the CharSequence overload
i.putExtra("object", stringObject);
}
else if (goingToUseIntegerObject...)
{
// use the int overload
i.putExtra("object", integerObject);
}
else if (goingToUseDateObject...)
{
// use the Serializable overload
i.putExtra("object", dateObject);
}
Altri suggerimenti
Invece di avere un riferimento Object
che può essere uno dei 3 altri tipi di dati diversi, io suggerirei fare una classe wrapper che implementa Parcelable
che memorizza i dati per voi. Se stai passando questi dati in giro un sacco, che renderà la vostra vita molto più semplice.