Mam trochę czasu, zastanawiając się, jakie dane docierają do moich metod Intent
/Bundle
s. Próbowałem dodawać punkty przerwania w celu sprawdzenia danych, ale nic nie widzę. Być może dlatego, że jest Parcelable
Nie mogę ręcznie przeczytać tego w Eclipse.
Na przykład onActivityResult(int requestCode, int resultCode, Intent data)
dla Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI)
. Skąd mam wiedzieć, jakie dane są dostępne? Zauważ, że nie jestem pytany o to, CO dane są dostępne, ale jak do cholery to rozumiem, więc mogę zastosować ten sam pomysł do każdego Bundle
/Intent
z platformy Android? Być może jest to proste, patrząc na dokumenty, ale nie widzę pełnej listy danych i nie widzę ich w Eclipse. Więc jestem zagubiony.
Bundle.keySet()
daje listę wszystkich kluczy w pakiecie. To powiedziawszy, zazwyczaj po prostu oczekujesz pewnych kluczy i odpytujesz je, ale keySet()
jest używany do sprawdzania pakietów, które otrzymujesz skądś.
public static String bundle2string(Bundle bundle) {
if (bundle == null) {
return null;
}
String string = "Bundle{";
for (String key : bundle.keySet()) {
string += " " + key + " => " + bundle.get(key) + ";";
}
string += " }Bundle";
return string;
}
otrzymuję klucz alll i wartość pakietu przechowywanego ...
for (String key : bundle.keySet()) {
string += " " + key + " => " + bundle.get(key) + ";";
}
wydajność:
(key) :(value)
profile_name:abc
Jedyną rzeczą, którą dostajesz z Pakietu, jest to, co wkładasz. Pakiety to sposoby przekazywania informacji między działaniami. Jeśli jesteś odpowiedzialny za całą aplikację, nie powinieneś zaglądać do Pakietu przedmiotów, powinieneś je po prostu wziąć. Pomyśl o hashmapach ... jeśli nie znasz klucza, to nie możesz przeszukiwać hashmap.
Aby umieścić przedmiot w Pakiecie i przekazać go do następnej czynności, musisz umieścić go jako Dodatek. Spójrz tutaj na przykład przekazywanie danych za pośrednictwem statystów i wiązek między działaniami.
Skopiowane i wklejone poniżej:
Z Activity1
Intent intent = new Intent(this,myActivity2.class);
Bundle bundle = new Bundle();
bundle.putString("myValue", myValue);
intent.putExtras(bundle);
navigation.this.startActivity(intent);
W Activity2
Bundle bundle = getIntent().getExtras();
act2MyValue= bundle.getString("myValue");