如何在Android中从Bundle中提取值

13

在使用Facebook_Android SDK发送请求时,我会收到一个bundle。有人能解释一下它是什么数据类型以及如何提取其中的数据吗?谢谢。

01-28 11:58:07.548: I/Values(16661): Bundle[{to[0]=100005099741441, to[1]=100005089509891, request=134129756751737}]

编辑 这里,to[i] 是一个字符串数组。我已经能够提取数据了,但我不认为这是正确的方法。

for(int i=0;i< size-1;i++){
System.out.println(values.getString("to["+i+"]"));
}

其中size是指名为value的Bundle的大小。


请查看我的答案 - 我更新了它,包含一个循环示例,可以在不依赖于捆绑大小的情况下遍历“to”元素。 - andr
2个回答

15

Bundle基本上就是一个字典,每个值都存储在一个key下。您必须知道key下的值的类型。当您知道类型时,调用与该类型相关的方法即可访问与key相关联的值(再次强调,您必须知道类型)。

例如,如果keyrequest,它的类型是String,则您会调用:

String value = bundle.getString("request");
如果类型是 long,你将会调用:
long value = bundle.getLong("request");

要循环遍历提供的to数组,只需在值为String类型时执行此操作:

要循环遍历提供的to数组,只需在值为String类型时执行此操作:

for (int i = 0; bundle.containsKey("to[" + i + "]"); i++) {
    String toElement = bundle.getString("to[" + i + "]");
}

Facebook API for Android中应提供Bundle中所有键及每个键的值类型,而不依赖于Bundle对象的大小。如果需要有关Bundle对象的进一步信息,请参阅此处的参考资料


4
Bundle bundle = intent.getBundle();
bundle.getString("ITEM_NAME");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接