2014-01-16 17 views
5

Ich habe MyClass Parcelable implementiert. Und habe 2 Fragmente. In MainActivity (onCreate) Ich habe Code:Pass Arraylist in Aktivität zu Fragment

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

Und in Fragment (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)); 
} 

Aber Extras alway null.why :)

+0

Sie auch neue TabFragmentHere.newInstance (mit dem Array-Liste hier) verwenden könnten; –

+0

statische Variable verwenden ... –

Antwort

3

Ihre bereitgestellten Code scheint in Ordnung. Ich vermute, dass das Problem von der Implementierung von MyClass herrührt. Eine typische Implementierung von Parcel ist so etwas (von google genommen)

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! Ich benutze ListFragment :) – NickDevil

+0

Haben Sie es behoben? Können Sie mir Ihren MyClass-Code zeigen? – Lowkey

+0

Ich benutzte statische :) – NickDevil

Verwandte Themen