将一个以上的Bundle传递给一个片段[Android]

时间:2015-04-24 19:32:30

标签: android fragment bundle

在传递到Android上的片段之前,是否可以将两个捆绑包合并为一个? 所以代码片段类似于:

  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.

3 个答案:

答案 0 :(得分:5)

  

是否可以在传递给a之前将两个捆绑组合成一个   Android上的片段?

是的,您可以使用Bundle.putAll(Bundle bundle)

来完成

或者您可以使用Bundle.putBundle(String key, Bundle value)

创建捆绑包,分别传递两个捆绑包

答案 1 :(得分: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");

答案 2 :(得分: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 b1 = mainBundle.getBundle("b1");
Bundle b2 = mainBundle.getBundle("b2");