使用Intent对象时,我们可以直接使用其putExtra()
来放置不同类型的数据。我们还可以将这些额外的数据放入Bundle
对象中,并将其添加到Intent
。那么为什么我们需要Bundle
,如果我们可以直接使用Intent
?意图和捆绑关系
意图和捆绑关系
回答
有时你需要只是一个few variables
或values
传递给其他一些Activity
,但如果你有,你需要传递给各种Activities
一个bunch of variable's or values
。在这种情况下,您可以使用Bundle
并将Bundle
轻松传递到所需的Activity
。而不是每次传递单个变量。
我们假设您需要将Bundle
从一个Activity
传递给另一个。这就是为什么Intent
允许你添加Bundle
作为额外的领域。
编辑:例如,如果你想从一个数据库是把这个行插入Bundle
非常方便的一些其他数据一起传递一行,并添加此Bundle
到Intent
作为一个额外的字段。
我在问为什么?我们将把相同的额外数据放入bundle中,并将该bundle添加到intent对象中,以便我们可以直接将其放入intent对象中。是不是? –
不是,它不是。你只需要一个'Bundle'你需要通过。你真的想将它逐场复制到'Intent'。如果“Bundle”和“Intent”的键重叠?你不能知道人们所做的所有事情,只要记住你可以将一个'Bundle'放入一个'Intent'中,当你需要它时,你就会知道该怎么做。 – Michael
一个小例子:你想从数据库中传递一行数据以及其他一些数据。将此行存储在“Bundle”中非常方便。在我的一个应用程序中,我使用了一个'Bundle'列表来传递数据库中的多行。 – Michael
如您所见,Intent
将其内部存储在Bundle
中。
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
我猜@Lalit意思是假设你的活动总是通过相同的变量,以不同的意图,可以存储所有的人都在一个单一的Bundle
在你的类和简单的使用intent.putExtras(mBundle)
只要你需要相同的一组是什么参数。例如,如果其中一个参数在代码中过时,那么可以更容易地更改代码。像:
public class MyActivity {
private Bundle mBundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
mBundle = new Bundle();
mBundle.putString("parameter1", value1);
mBundle.putString("parameter2", value2);
}
private void openFirstActivity() {
Intent intent = new Intent(this, FirstActivity.class);
intent.putExtras(mBundle);
startActivity(intent);
}
private void openSecondActivity() {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtras(mBundle);
startActivity(intent);
}
}
OBS:如前所述,Intent
存储在内部Bundle
的参数,这是值得注意的是,当你调用putExtras
,内部意向束不指向同一个对象,但创建一个所有变量的副本,而不是像这样使用简单for
:
for (int i=0; i<array.mSize; i++) {
put(array.keyAt(i), array.valueAt(i));
}
- 1. 关系捆绑和宝石
- 2. 捆绑moon.lua依赖关系
- 3. NullPointerException访问意图捆绑
- 4. 问题与捆绑外部依赖关系在Liferay Dxp捆绑
- 5. JavaFX jar捆绑依赖关系
- 6. 如何建立捆绑依赖关系?
- 7. Symfony2捆绑系统
- 8. Android意图约定的意图“额外”键与捆绑键
- 9. 项目管理和捆绑依赖关系
- 10. 如何在激活捆绑包时自动激活捆绑的依赖关系?
- 11. 捆绑和捆绑安装的区别
- 12. 捆绑和putExtra
- 13. Android和捆绑
- 14. 在Android中使用意图和捆绑整数
- 15. 嵌套视图,后和意见关系
- 16. OSGi包在指定捆绑包上拾取系统捆绑包
- 17. 捆绑和Ruby 1.9.2
- 18. Boost子图和捆绑属性
- 19. 捆绑安装错误,意外':'
- 20. rjava.lang.IllegalArgumentException上startActivity(意向,捆绑animantion)
- 21. Symfony2 - Doctrine - 2捆绑之间的实体关系
- 22. 外部依赖关系错误地捆绑在rollup.js中?
- 23. 捆绑安装包括所有的依赖关系,即使--with
- 24. 如何解决捆绑器中的依赖关系问题?
- 25. Eclipse插件项目不消耗OSGI捆绑依赖关系
- 26. 如何在IronWorker中捆绑本地gem依赖关系
- 27. 解决与罐子捆绑的处女座依赖关系
- 28. 当使用browserify捆绑socket.io依赖关系与--node标志
- 29. 跨OSGI捆绑包的XSLT依赖关系
- 30. 如何在exe中捆绑依赖关系
对不起,但这是错误的,检查我的答案知道为什么。 – Reno
'mExtras = new Bundle();'这不够有说服力吗?如果不去,请自己检查'Intent.java'的源代码。 – Reno