Intent.putExtra(String,Bundle)vs Intent.putExtra(Bundle)

时间:2012-08-10 10:58:17

标签: java android eclipse android-intent

这个问题可能听起来很愚蠢,但我知道我们何时将活动名称放在Intent.putExtra()?在一种情况下,我们只使用bundle进行额外的操作,而在其他情况下,我们使用类名传递它。如果我们使用Intent.putExtra(String, Bundle)我们已经在Intent构造函数中传递了活动名称,我有点困惑吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:15)

我认为您的意思是putExtra(String, Bundle) vs putExtras(Bundle) s )。

第一个添加捆绑包作为您提供的密钥的值。捆绑包很简单,就是对象值。

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

将它们视为Map界面:

Map.put(String key, Object value)

VS

Map.putAll(Map anotherMap)

答案 1 :(得分:3)

这种方法与众不同。如果您使用Bundle,则可以在其中存储几乎所有类型:

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

并将其传递给活动

mIntent.putExtras(mBundle);

并在收到信息的其他活动中,只需抓住包的内容:

   Bundle extras = getIntent().getExtras();

并抓住bundle中的每个元素,如下所示:

extras.getString("myKey")

答案 2 :(得分:1)