如何在片段中获得更多的捆绑

时间:2017-08-07 08:48:37

标签: java android android-fragments

我在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){

}

2 个答案:

答案 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();