2011-01-24 13 views

Odpowiedz

-2

Po utworzeniu intencji. można ustawić dane przez

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

gdy intencją B rozpocząć można uzyskać dane o

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

Jest to ArrayList, a nie String. –

+0

ohkk chory próbuj bardzo dziękuję –

+0

nie jestem w stanie uzyskać tych wartości ... im uzyskanie wartości null ... z góry dzięki –

0

Według mnie utworzyć klasę statyczną i umieścić tablicę z wykazu w nim podczas przechodzenie od jednej czynności do inny.

Po osiągnięciu innej czynności uzyskaj dostęp do wartości zapisanej w klasie statycznej.

AKTUALIZACJA
Z czasem nauczyłem się, że to okropna praktyka. Po wyczyszczeniu/odtworzeniu obiektów wartości statyczne mogą zostać utracone. a następnie umieszczamy w pamięci również wiele danych. Korzystanie coś podobnego Parcelable jest dobrą praktyką

+5

Korzystanie z pól statycznych do przesyłania danych z jednej działalności do drugiej jest naprawdę złym projektem:/ –

+0

I dlaczego tak !? jeśli tylko mała liczba wartości dotyczy !? –

+7

Ponieważ gdy użytkownik robi takie rzeczy jak BACK lub onPause() itp., Aplikacja wciąż uważa, że ​​zmienne są w pamięci, gdy nie są, i aplikacji FC. Nauczyłem się ciężko :-) –

41

To zależy od typu 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)

Następnie można przeczytać od ciebie następny aktywność zastępując put z get z kluczem ciąg jako argument np

myIntent.getStringArrayListExtra("arrayPeople"); 
+0

Yaaa mam go dzięki bardzo –

+2

Zapraszamy i nie zapomnij, aby oznaczyć tę odpowiedź, czy to pomaga :) –

+0

@LabeebP Jak przekazać ArrayList do innej klasy –

3

Można utworzyć jeden pakiet w wiązce umieścić parceable lista tablica dostarczone przez labeeb i ustaw zamiarem tutaj jest kod dla

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); 

a otrzymasz dane do innej aktywności jak

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

W odwołanego aktywności należy użyć

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

gdzie ParentActivity.STRING_LIST jest kluczem stała dla listy.

Powiązane problemy