将多个Bundle传递给一个fragment [安卓]

4
在 Android 上,在将两个 bundle 传递到 fragment 之前,是否有可能将它们合并成一个 bundle?因此,代码片段类似于:
  Bundle b1 = SomeClass1.getSomeBundle();
  Bundle b2 = SomeClass2.getDifferentBundle();
  // How to do I pass these two bundles to a fragment?
  fragment.setArgument(b1 + b2); // Illustrative only.

1
为什么要有两个不同的捆绑包?而不是一个。 - Rod_Algonquin
3个回答

11

我已经阅读过 putAll() 会覆盖现有的 Bundle。但是,无论如何,putBundle() 似乎是更好的选择! - Barthy
1
@BarthyB:如果两个包中有不同的键,则使用putAll,否则请使用putBundle - ρяσѕρєя K
putAll()是否具有与仅有一个bundle相同的效果?还是我需要记住我传递了多个bundle。 - user2399453
@user3079275:请解释得更详细一些。 - ρяσѕρєя K
我有两个具有不同键的bundles,因此我认为putAll()方法的效果就好像我传入了一个bundle1 + bundle2的bundle一样,是吗?如果是这样,那我需要使用putAll()方法。 - user2399453

0

Bundle 可以包含另一个 Bundle。您可以使用 putBundle

 Bundle b1 = SomeClass1.getSomeBundle();
 Bundle b2 = SomeClass2.getDifferentBundle();
 b1.putBundle("b2", b2);
 fragment.setArgument(b1);

要检索它,您可以使用getBundle(String key)

  Bundle b1 = getArguments();
  Bundle b2 = b1.getBundle("b2");

0

Bundle 可以包含 Bundle

Bundle mainBundle = new Bundle();
Bundle b1 = SomeClass1.getSomeBundle();
Bundle b2 = SomeClass2.getDifferentBundle();

mainBundle.putBundle("b1", b1);
mainBundle.putBundle("b2", b2);

fragment.setArgument(mainBundle);

要从一个 bundle 中获取 bundle,只需调用:

Bundle b1 = mainBundle.getBundle("b1");
Bundle b2 = mainBundle.getBundle("b2");

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