2012-08-10 85 views
5

这个问题可能听起来很愚蠢,但我知道什么时候我们将活动名称放在Intent.putExtra()?在其中一种情况下,我们只在bundle中添加额外的内容,而在其他情况下,我们将它与类名一起传递。我有点困惑,如果我们使用Intent.putExtra(String, Bundle)我们已经通过Intent构造函数的活动名称或不?Intent.putExtra(String,Bundle)vs Intent.putExtra(Bundle)

感谢您的帮助!

+0

Bundle用于分配一些空间,而我们使用put extra和get extra通过bundle(分配的空间)只有它会传输 – Ramkumar 2012-08-10 11:01:14

回答

13

我想你的意思putExtra(String, Bundle) VS putExtras(Bundle)(与小号)。

第一个将捆绑添加为您提供的密钥的值。该包简单的是一个对象值。

第二个将所提供的包中的所有键/值对添加到意图。在这种情况下,包的内容将被添加到意图中,而不是包本身。他们的

想象的那样在Map接口:

Map.put(String key, Object value) 

VS

Map.putAll(Map anotherMap) 
1

的办法就是这里的区别。如果您使用的是Bundle你可以存储几乎所有类型的变量:

Bundle mBundle = new Bundle(); 
mBundle.put(key, value); 

,并把它传递给活动

mIntent.putExtras(mBundle); 

,并在临危的信息的其他活动,只要抓住的内容束这样的:

Bundle extras = getIntent().getExtras(); 

并在bundle这样抓住每个元素:

extras.getString("myKey")