2014-01-16 1 views
5

У меня есть MyClass реализуется Parcelable. И есть 2 фрагмента. В MainActivity (OnCreate) У меня есть код:pass Arraylist in Activity to Fragment

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 что-то вроде этого (взято из Google)

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