Ответ 1
Bundle.keySet()
дает вам список всех ключей в комплекте. Тем не менее, как правило, вы просто ожидаете определенных ключей и запрашиваете их, но keySet() полезен для изучения пакетов, которые вы получаете откуда-то.
У меня есть время выяснить, какие данные поступают к моим методам через Intent
/Bundle
s. Я попытался добавить точки останова для проверки данных, но ничего не вижу. Возможно, потому, что он Parcelable
, я не могу прочитать его вручную в Eclipse.
Например, a onActivityResult(int requestCode, int resultCode, Intent data)
для a Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI)
. Как узнать, какие данные доступны? Обратите внимание: я не прошу, чтобы данные WHAT были доступны, но как я понимаю, поэтому я могу применить ту же идею к любому Bundle
/Intent
из фреймворка Android? Возможно, это просто, как смотреть на документы, но я не вижу полного списка данных, и я не вижу его в Eclipse. Так что я потерялся.
Помощь? Приветствия
Bundle.keySet()
дает вам список всех ключей в комплекте. Тем не менее, как правило, вы просто ожидаете определенных ключей и запрашиваете их, но keySet() полезен для изучения пакетов, которые вы получаете откуда-то.
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;
}
я получаю ключ alll и значение хранимого пакета...
for (String key : bundle.keySet()) {
string += " " + key + " => " + bundle.get(key) + ";";
}
вывод:
(key) :(value)
profile_name:abc
Единственное, что вы получаете из Bundle - это то, что вы вложили. Связки - это способы передачи информации между действиями. Если вы отвечаете за все свое приложение, вам не нужно заглядывать в Bundle для ваших объектов, вы должны просто захватить их. Подумайте ключи hashmap... если вы не знаете ключ, вам не нравится поиск хэш-карты.
Чтобы поместить элемент в Bundle и передать его следующему действию, вам нужно указать его как Extra. Посмотрите здесь для примера передачи данных через дополнительные функции и пакеты между действиями.
Скопировано и вставлено ниже:
Из Activity1
Intent intent = new Intent(this,myActivity2.class);
Bundle bundle = new Bundle();
bundle.putString("myValue", myValue);
intent.putExtras(bundle);
navigation.this.startActivity(intent);
В Activity2
Bundle bundle = getIntent().getExtras();
act2MyValue= bundle.getString("myValue");