2011-01-24 8 views

risposta

-2

Quando si crea l'intenzione. è possibile impostare i dati da

intent.putExtra("keyName", "somevalue"); 

quando intento B iniziare è possibile ottenere i dati da

Bundle extras = getIntent().getExtras(); 
if(extras !=null) 
{ 
    String value = extras.getString("keyName"); 
} 
+0

È un arraylist, non una stringa. –

+0

ohkk ill try grazie mille –

+0

non riesco a ottenere quei valori ... sto ottenendo valore nullo ... grazie in anticipo –

0

Secondo me, creare classe statica e mettere l'array-lista in esso, mentre si traversa da un'attività l'altro.

Quando si raggiunge in un'altra attività, accedere al valore memorizzato nella classe statica.

UPDATE
ho imparato con il tempo che si tratta di una pratica orribile. Quando gli oggetti vengono cancellati/ricreati, i valori statici potrebbero andare persi. e poi abbiamo messo un sacco di dati anche nella memoria. Usando qualcosa di simile Parcelable è una buona pratica

+5

L'utilizzo di campi statici per trasferire dati da un'attività a un'altra è davvero un pessimo design:/ –

+0

E perché così !? se si tratta solo di un piccolo numero di valori !? –

+7

Perché quando l'utente fa cose come BACK o onPause() ecc., L'app pensa ancora che le variabili siano in memoria quando non lo sono e le FC dell'app. Ho imparato nel modo più duro :-) –

41

Dipende dal tipo di arraylist

  • putIntegerArrayListExtra(String name, ArrayList<Integer> value)

  • putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)

  • putStringArrayListExtra(String name, ArrayList<String> value)

  • putCharSequenceArrayListExtra(String name, ArrayList<CharSequence> value)

Poi si può leggere da voi attività successiva, sostituendo put con get con la stringa chiave come argomento, ad esempio

myIntent.getStringArrayListExtra("arrayPeople"); 
+0

Yaaa l'ho ricevuto grazie mille –

+2

Sei il benvenuto e non dimenticare di segnare questa risposta se questo aiuta :) –

+0

@LabeebP Come passare ArrayList in un'altra classe –

3

È possibile creare un pacchetto in bundle mettere lista di array parceable fornito da Labeeb e impostato su intento è il codice per

Intent i = new Intent(this,name.class); 
Bundle b = new Bundle(); 
b.putIntegerArrayListExtra(String name, ArrayList<Integer> value); 
//b.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value); 
//b.putStringArrayListExtra(String name, ArrayList<String> value); 
i.putExtra(String name,b); 
startActivity(i); 

e ottenere i dati in un'altra attività, come

//pseudo code 
Bundle b = getIntent().getExtra().putParcelableArrayListExtra(String name); 
0

In attività revocata si dovrebbe usare

Bundle bundle = getIntent().getExtras();    
ArrayList<String> stringArray = bundle.getStringArrayList(ParentActivity.STRING_LIST); 

dove ParentActivity.STRING_LIST è il vostro costante chiave per la lista.