2013-08-02 44 views
0

我有这样一类:通行证Parcelable对象到FragmentActivity

public class Images implements Parcelable { 
    public String[] imageUrls = new String[]{"url1", "url2"}; 
    public String[] imageThumbUrls = new String[]{"url3", "url4"}; 
    public Images(){} 
    public Images(Parcel in){ 
     this.imageUrls = (String[]) in.readArray(String.class.getClassLoader()); 
     this.imageThumbUrls = (String[]) in.readArray(String.class.getClassLoader()); 
    } 
    public int describeContents(){return 0;} 
    public void writeToParcel(Parcel dest, int flags){ 
     dest.writeStringArray(imageUrls); 
     dest.writeStringArray(imageThumbUrls); 
    } 
    public static final Parcelable.Creator<Images> CREATOR = new Parcelable.Creator<Images>(){ 
     public Images createFromParcel(Parcel source){return new Images(source);} 
     public Images[] newArray(int size){return new Images[size];} 
    }; 
} 

当我通过它从一个FragmentActivity到的片段,它是好的。我这样做是这样的: 在FragmentActivity:

MyFragment.newInstance(new Images()); 

在片段:

public static MyFragment newInstance(Images imgs){ 
    MyFragment mf = new MyFragment(); 
    Bundle args = new Bundle(); 
    args.putParcelable(TAG, imgs); 
    mf.setArguments(args); 
    return mf; 
} 
public void onCreate(Bundle s){Images imgs = getArguments().getParcelable(TAG);} 

但是,当我尝试从活动到FragmentActivity通过它,它说解组未知类型的错误。我这样做是这样的: 在我的活动的点击收听:

public void onClick(View v){ 
    Intent i = new intent(v.getContext(), MyFragmentActivity.class); 
    i.putExtra(TAG, new Images()); 
    v.getContext().startActivity(i); 
} 

在我FragmentActivity:

public void onCreate(Bundle s){ 
    Images imgs = getIntent().getParcelableExtra(TAG); 
} 

我不知道为什么我不能在第二种情况下正确地传递而我在第一个中做到了。有什么我错过了吗?谢谢你的阅读。

回答

0

好吧,我做到了。我在形象改变的构造: 来自:

public Images(Parcel in) { 
    this.imageUrls = (String[]) in.readArray(String.class.getClassLoader()); 
    this.imageThumbUrls = (String[]) in.readArray(String.class.getClassLoader()); 
} 

要:

public Images(Parcel in) { 
    in.readStringArray(this.imageUrls); 
    in.readStringArray(this.imageThumbUrls); 
} 

但我仍然不知道为什么它成功地将原来的情况 - 从MyFragmentActivity传递给MyFragment。