使用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. 项目管理和捆绑依赖关系
- 4. Android和捆绑
- 5. 捆绑和putExtra
- 6. OSGi包在指定捆绑包上拾取系统捆绑包
- 7. Boost子图和捆绑属性
- 8. 如何使用gulp捆绑外部依赖关系
- 9. 如何解决捆绑器中的依赖关系问题?
- 10. 使用Mina JAR依赖关系而不是捆绑包?
- 11. 如何在exe中捆绑依赖关系
- 12. 跨OSGI捆绑包的XSLT依赖关系
- 13. 使用捆绑程序在运行时加载依赖关系
- 14. 外部依赖关系错误地捆绑在rollup.js中?
- 15. 试图用ExtractTextPlugin捆绑CSS
- 16. 试图捆绑第一个React应用程序 - 捆绑太大
- 17. 如何跟踪和检查捆绑的Ruby宝石中的依赖关系
- 18. 捆绑安装 - 部署和捆绑包的区别是什么
- 19. 捆绑和缩小问题
- 20. ASP.Net MVC捆绑和缩小
- 21. RVM和捆绑在生产
- 22. MVC 4和捆绑销售
- 23. MVC捆绑和缩小
- 24. 捆绑和缩小技术
- 25. 轨与Capistrano的和捆绑
- 26. 配置MAC捆绑MAC操作系统
- 27. 关系意识
- 28. 捆绑-ManifestVersion = 2对比捆绑-ManifestVersion = 1
- 29. 捆绑与捆绑安装相同吗?
- 30. 关于捆绑器路径的困惑
对不起,但这是错误的,检查我的答案知道为什么。 – Reno
'mExtras = new Bundle();'这不够有说服力吗?如果不去,请自己检查'Intent.java'的源代码。 – Reno