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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top