如何使用实例将自定义对象arraylist从activity传递到fragment

时间:2016-12-29 08:59:14

标签: android android-fragments android-viewpager android-bundle

我正在使用viewpager并创建片段,我想传递arraylist。所以我尝试了下面的事情:

MainActivity:

 private ArrayList<customers> mArrayList = null;

  ViewPagerAdapter adapter = new ViewPagerAdapter(MainActivity.this.getSupportFragmentManager());

  adapter.addFrag(NewCustomer.newInstance(mArrayList ), "NewCustomer");

现在在片段类我正在创建实例:

 public static final ArrayList<customers> data = new ArrayList<customers>();

 public static final NewCustomer newInstance(ArrayList<customers> mArrayList) {

        NewCustomer f = new NewCustomer();
        Bundle bdl = new Bundle(1);
        bdl.putParcelableArrayList(data, mArrayList);
        f.setArguments(bdl);
        return f;
    }

但这不起作用。它在bdl.putParcelableArrayList上显示错误我想获得arraylist并存储到该类的本地arraylist中。

如何使用自定义对象获取arraylist?

3 个答案:

答案 0 :(得分:5)

您传递的第一个参数是错误的。 检查定义:

putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)

在片段中定义密钥如下:

public static final String KEY;

要将片段中的arraylist作为局部变量,请使用以下代码:

@Override
public void onStart() {
    super.onStart();
    Bundle arguments = getArguments();
    ArrayList<customers> customer_list = arguments.getParcelable(KEY);
}

答案 1 :(得分:1)

你能试试吗?

public static final NewCustomer newInstance(ArrayList<customers> mArrayList) {

        NewCustomer f = new NewCustomer();
        Bundle bdl = new Bundle(1);
        this.data = mArrayList; // assign its Value
        bdl.putParcelableArrayList(data, mArrayList);
        f.setArguments(bdl);
        return f;
    }

this.data = mArrayList将为fragment的当前成员变量赋值。现在我们可以在当前片段中访问它。

答案 2 :(得分:1)

请检查您的模型类“NewCustomer”是否实现了Parcelable。