簡體   English   中英

將Parcelable對象從Activity傳遞到FragmentActivity

[英]Pass Parcelable object from an Activity to a 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傳遞到Fragment時,這很好。 我這樣做是這樣的:在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);}

但是,當我嘗試將其從Activity傳遞給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);
}

我不知道為什么我在第一種情況下無法通過第二種情況。 我有什么想念的嗎? 感謝您的閱讀。

好吧,我做到了。 我在我的Images中更改了構造函數:from:

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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM