android - पारगमन के साथ टुकड़े के बीच ArreyList पासिंग



arraylist parcelable (1)

रेट्रोफ़िट के साथ एक जेसन लेने और अतुल्यकालिक कॉलबैक का उपयोग करने के बाद मैं मेन ऐक्टिविटी से किसी टुकड़ी तक एक ArrayList पारित नहीं कर सकता।

मुख्य गतिविधि से कोड:

 lFragmentManager = getFragmentManager();
            lFragment = lFragmentManager.findFragmentById(R.id.frame_container);
            lFragment = new Fragment_Categories();
            Bundle bundle = new Bundle();
            bundle.putParcelableArrayList("list_categories", Categories_.getCategories());
            //for(int a = 0 ; a < Categories_.getCategories().size(); a++)
            //   Log.d("billy",Categories_.getCategories().get(a).getTitle());
            lFragment.setArguments(bundle);
        lFragmentManager.beginTransaction().replace(R.id.frame_container ,lFragment ).commit();

ध्यान दें कि लॉग इन टिप्पणियां सूची के संदर्भ को प्रिंट करती हैं , इसलिए मैं इस कोड के अंदर इस कोड के साथ टुकड़े में ArrayList लेता हूं:

if(savedInstanceState != null)
        categories =  savedInstanceState.getParcelableArrayList("list_categories");

    /*
     * initialize the Recycler view
     */
    mRecycler = (RecyclerView)view.findViewById(R.id.categories_list);
    mAdapter = new AdapterCategories(categories,getActivity());
    mRecycler.setAdapter(mAdapter);

यहां मेरी कक्षा श्रेणी है:

public class Categories implements Parcelable{

private ArrayList<NavDrawerItem> categories;

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

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeTypedList(categories);

}

public static final Parcelable.Creator<Categories> CREATOR = new Parcelable.Creator<Categories>() {

    public Categories createFromParcel(Parcel in) {
        return new Categories(in);

    }

    public Categories[] newArray(int size){
        return new Categories[size];
    }
};

private Categories(Parcel in){

    categories = in.createTypedArrayList(NavDrawerItem.CREATOR);
}

public ArrayList<NavDrawerItem> getCategories() {
    return categories;
}
}

और यहां क्लास नवड्रावर आईटम है:

public class NavDrawerItem implements Parcelable {

private String title;
private String description;
private String image;
private String post_count;
private String id;
private String slug;
private int parent;

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

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(title);
    dest.writeString(description);
    dest.writeString(image);
    dest.writeString(post_count);
    dest.writeString(id);
    dest.writeString(slug);
    dest.writeInt(parent);
}

public static final Parcelable.Creator<NavDrawerItem> CREATOR = new Parcelable.Creator<NavDrawerItem>() {

    public NavDrawerItem createFromParcel(Parcel in) {
        return new NavDrawerItem(in);

    }

    public NavDrawerItem[] newArray(int size){
        return new NavDrawerItem[size];
    }
};

private NavDrawerItem(Parcel in){
    title = in.readString();
    description = in.readString();
    image = in.readString();
    post_count = in.readString();
    id = in.readString();
    slug = in.readString();
    parent = in.readInt();
}

समस्या यह है कि टुकड़े के अंदर (जब RecyclerView के एडाप्टर में सूची को पार करने की कोशिश कर रहा हो) या RecyclerView के एडेप्टर के अंदर मैं एक रिक्त अपवाद लेता हूं:

java.lang.NullPointerException: वर्चुअल विधि 'java.util.ArrayList android.os.Bundle.getParcelableArrayList (java.lang.String)' को एक अशक्त वस्तु संदर्भ पर खोलने का प्रयास

सहायता के लिए धनयवाद!!


आप अपने तर्कों को प्राप्त करने के लिए saveInstanceState() उपयोग नहीं करेंगे, क्योंकि वे saveInstanceState() ऑपरेशन के भाग के रूप में पारित नहीं किए गए थे। आप बजाय getArguments() का उपयोग करना चाहते हैं तो यह कोशिश करो ...

categories = getArguments().getParcelableArrayList("list_categories");





parcelable