Как мне узнать, какие данные даны в Bundle? - PullRequest
37 голосов
/ 25 июня 2011

У меня чертовски много времени выясняется, какие данные поступают в мои методы через Intent / Bundle с.Я пытался добавить точки останова для проверки данных, но ничего не вижу.Возможно, потому что это Parcelable, я не могу прочитать его вручную в Eclipse.

Например, onActivityResult(int requestCode, int resultCode, Intent data) для Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI).Как мне узнать, какие данные доступны?Заметьте, я не спрашиваю, КАКИЕ данные доступны, но как, черт возьми, мне это понять, чтобы я мог применить ту же идею к любому Bundle / Intent из платформы Android?Возможно, это просто, как просматривать документы, но я не вижу полного списка данных и не вижу его в Eclipse.Так что я в растерянности.

Ответы [ 4 ]

75 голосов
/ 25 июня 2011

Bundle.keySet() дает вам список всех ключей в комплекте.Тем не менее, обычно вы просто ожидаете определенные ключи и запрашиваете их, но keySet() используется для проверки пакетов, которые вы откуда-то получаете.

46 голосов
/ 20 ноября 2013
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;
}
4 голосов
/ 31 августа 2016

я получаю ключ alll и сохраняемое значение пакета ...

for (String key : bundle.keySet()) {
    string += " " + key + " => " + bundle.get(key) + ";";
}

вывод:

(key)       :(value)    
profile_name:abc
0 голосов
/ 25 июня 2011

Единственное, что вы получаете из пакета - это то, что вы вставляете. Пакеты - это способы передачи информации между действиями.Если вы отвечаете за все ваше приложение, вам не нужно искать в Bundle свои объекты, вы просто должны взять их.Подумайте о ключах hashmap ... если вы не знаете ключ, это не значит, что вы можете искать в hashmap.

Чтобы поместить элемент в Bundle и передать его следующему упражнению, вам нужно поставитьэто как экстра.Взгляните здесь для примера передачи данных с помощью дополнений и связок между действиями.

Скопировано и вставлено ниже:

Из действия 1

Intent intent = new Intent(this,myActivity2.class);
Bundle bundle = new Bundle();
bundle.putString("myValue", myValue);
intent.putExtras(bundle);
navigation.this.startActivity(intent);

В Деятельности2

Bundle bundle = getIntent().getExtras();
act2MyValue= bundle.getString("myValue");
...