2014-01-16 80 views
5

我有MyClass實現Parcelable。並有2個片段。在MainActivity(的onCreate)我有代碼:將活動中的Arraylist傳遞給片段

ArrayList<MyClass> data = new ArrayList<MyClass>(); 
............ 
Bundle extras1 = new Bundle(); 
extras1.putParcelableArrayList("arraylist", data); 
Tab1Fragment fg = new Tab1Fragment(); 
fg.setArguments(extras1); 

而在片段(onCreateView):

Bundle extras = getArguments(); 
ListView list = (ListView) content.findViewById(R.id.lvMain); 
if (extras != null) { 
    data = extras.getParcelableArrayList("arraylist"); 
    list.setAdapter(new MyAdapter(getActivity(), data)); 
} 

但演員送花兒給人null.why :)

+0

您也可以使用新的TabFragmentHere.newInstance(這裏傳遞數組列表); –

+0

使用靜態變量... –

回答

3

你提供的代碼似乎罰款。我懷疑問題出自你如何實現MyClass。 Parcelable的典型實現是這樣的(從谷歌獲取)

public class MyParcelable implements Parcelable { 
private int mData; 

public int describeContents() { 
    return 0; 
} 

public void writeToParcel(Parcel out, int flags) { 
    out.writeInt(mData); 
} 

public static final Parcelable.Creator<MyParcelable> CREATOR 
     = new Parcelable.Creator<MyParcelable>() { 
    public MyParcelable createFromParcel(Parcel in) { 
     return new MyParcelable(in); 
    } 

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

private MyParcelable(Parcel in) { 
    mData = in.readInt(); 
} 
+0

ty!我使用ListFragment :) – NickDevil

+0

你有沒有修復它?你能告訴我你的MyClass代碼嗎? – Lowkey

+0

我用靜態:) – NickDevil

相關問題