我在Bundle
中获得的Fragment
以上有问题。
使用我的代码我从活动中传递数据,但不会在片段中获取值数据。
活动:
Bundle bundle = new Bundle();
bundle.putIntegerArrayList("oki", hm);
bundle.putIntegerArrayList("okiquantitapizze", hm_quantitàpizze);
System.out.println("PERO:" + bundle);
MyListFragment myFragment = new MyListFragment();
myFragment.setArguments(bundle);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.a, myFragment);
transaction.commit();
FRAGMENT:
try {
bundle = getArguments();
System.out.println("BUNDLES1:" + bundle);
if (bundle != null) {
strtext = bundle.getIntegerArrayList("oki");
quantitàpizze=bundle2.getIntegerArrayList("okiquantitapizze");
System.out.println("CAZZ:" + strtext);
System.out.println("PRESO:" + quantitàpizze);
}
} catch(Exception e){
}
答案 0 :(得分:0)
关于如何传递多个包的问题是将第二个Bundle
放入第一个包中。为此,您可以使用Bundle#putAll
方法:
将来自给定Bundle的所有映射插入此Bundle。
e.g。
Bundle bundle = new Bundle();
Bundle bundle2 = new Bundle();
bundle.putAll(bundle2); // empty fields, but that's how it works
通过它,您可以访问Fragment
中的每个字段。在你的情况下,它看起来像这样
strtext = bundle.getIntegerArrayList("oki");
quantitàpizze=bundle.getIntegerArrayList("okiquantitapizze"); // removed bundle2
请参阅putAll
的{{3}}。
答案 1 :(得分:0)
虽然这不是问题的答案,但您可以使用此方法为Fragment
设置参数您可以在片段中使用newInstance方法
public static MyListFragment newInstance(ArrayList<Integer> hm,ArrayList<Integer> hm_quantitàpizze) {
Bundle bundle= new Bundle();
bundle.putIntegerArrayList("oki", hm);
bundle.putIntegerArrayList("okiquantitapizze", hm_quantitàpizze);
MyListFragment fragment = new MyListFragment ();
fragment.setArguments(bundle);
return fragment;
}
获取片段onCreateView()
中的捆绑包
在活动中制作片段交易,如下所示
MyListFragment myListFragment = MyListFragment.newInstance(hm,hm_quantitàpizze);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frag_container,myListFragment ).commit();