Android 如何将自定义对象arraylist从活动传递到带有实例的片段

Android 如何将自定义对象arraylist从活动传递到带有实例的片段,android,android-fragments,android-viewpager,android-bundle,Android,Android Fragments,Android Viewpager,Android Bundle,我正在使用viewpager并创建片段,我想传递arraylist。因此,我尝试了以下方法: 主要活动: private ArrayList<customers> mArrayList = null; ViewPagerAdapter adapter = new ViewPagerAdapter(MainActivity.this.getSupportFragmentManager()); adapter.addFrag(NewCustomer.newInstance(

我正在使用viewpager并创建片段,我想传递arraylist。因此,我尝试了以下方法:

主要活动:

 private ArrayList<customers> mArrayList = null;

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

  adapter.addFrag(NewCustomer.newInstance(mArrayList ), "NewCustomer");
现在在fragment类中,我正在创建实例:

 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?

可以试试吗

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的当前成员变量赋值。现在我们可以在当前片段中访问它。

您能试试吗

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的当前成员变量赋值。现在我们可以在当前片段中访问它。

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

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

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

putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)
要将arraylist作为片段中的局部变量获取,请使用以下代码:

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

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

putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)
要将arraylist作为片段中的局部变量获取,请使用以下代码:

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

您应该解释为什么您提供的代码可以工作,以及它在做什么。如果你只提供一个代码,这对OP和下面的用户没有帮助,他们可能会提出类似的问题;但是您如何解释在静态上下文中的用法呢?我真的不明白那部分。或该方法的错误使用;您应该解释为什么您提供的代码可以工作,以及它在做什么。如果你只提供一个代码,这对OP和下面的用户没有帮助,他们可能会提出类似的问题;但是您如何解释在静态上下文中的用法呢?我真的不明白那部分。或该方法的错误使用;写得很好。您可以添加,还可以演示如何使用需要初始化的键调用putParcelable,因为这是一个编写良好的常量。您可以添加,还可以演示如何使用需要初始化的键调用putParcelable,因为这是一个常量