2016-11-14 69 views
0

我想从我的活动通过Arraylist的定制的Ojects从我的活​​动到我的片段,我试图通过Parcelable Arraylist传递它,但我无法做到任何人都可以帮助? anymethod传递数组列表是可接受的从活性片段传递阵列列表<CustomObject>从活动到varioud片段使用parcablearraylist

我的代码

String driverId = jsonObject.getJSONArray("user_data").getJSONObject(count).getString("order_id"); 
String pickupaddress = jsonObject.getJSONArray("user_data").getJSONObject(count).getString("pickup_address"); 
String contact = jsonObject.getJSONArray("user_data").getJSONObject(count).getString("contact"); 
Log.d("HomeAcivity",": "+driverId+","+pickupaddress+","+contact); 
singleton = new Singleton(driverId,pickupaddress,contact); 
userDataParserArrayList.add(singleton); 

FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
Jobs jobs = new Jobs(); 
Bundle bundle = new Bundle(); 
bundle.putParcelableArrayList("Order",userDataParserArrayList); 
jobs.setArguments(bundle); 
fragmentTransaction.commit(); 

片段1 oncreateview:检索

userDataParserArrayList = getArguments().getParcelableArrayList("Order"); 

ParcableClass(),它不是一个单独的类只有名称是单

public class Singleton implements Parcelable { 

    private String orderId; 
    private String pickupAddress; 
    private String contact; 


    Singleton(String orderId,String pickupAddress,String contact){ 

     this.orderId = orderId; 
     this.pickupAddress = pickupAddress; 
     this.contact = contact; 
    } 

    protected Singleton(Parcel in) { 
     orderId = in.readString(); 
     pickupAddress = in.readString(); 
     contact = in.readString(); 
    } 

    public static final Creator<Singleton> CREATOR = new Creator<Singleton>() { 
     @Override 
     public Singleton createFromParcel(Parcel in) { 
      return new Singleton(in); 
     } 

     @Override 
     public Singleton[] newArray(int size) { 
      return new Singleton[size]; 
     } 
    }; 

    public String getOrderId() { 
     return orderId; 
    } 

    public String getPickupAddress() { 
     return pickupAddress; 
    } 

    public String getContact() { 
     return contact; 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(orderId); 
     dest.writeString(pickupAddress); 
     dest.writeString(contact); 
    } 
} 
+0

您不需要将活动的数组列表传递给片段。您可以通过片段中的getActivity.arraylist_name来访问活动的数组列表。 –

+0

“我无法做到” - >您是否收到某种错误? – clownba0t

+0

@bhargav你可以给我一个例子 – bipin

回答

0

@bipin首先,您需要将您的片段添加到ctivity,如下面的代码

Jobs jobs = new Jobs(); 
FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.add("JOB_FRAGEMENT", jobs).commit(); 

创建后“工作片段”你可以从你的活动访问的ArrayList像下面的代码

((YourActivityName)getActivity()).yourArrayList(); in onViewCreated() method; 

然后使用这个列表!

+0

如何将作业对象添加到fragmentTransaction中? – bipin