MainActivity을 포함하는 응용 프로그램이 있고 각 탭에 다른 단편을 호스트합니다. 이 메커니즘은 FragmentPageAdapter를 확장하는 SectionPageAdapter를 통해 작동합니다. 탭의Parcelable IOException - 직렬화하지 않을 때 직렬화 가능 객체 작성하기
하나는 GeneralSearchFragment
public class GeneralSearchFragment extends Fragment {
public GeneralSearchFragment(){
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
final ConstraintLayout constraintLayout = (ConstraintLayout) inflater.inflate(R.layout.fragment_searchtab, container, false);
((ImageView)constraintLayout.findViewById(R.id.searchByName)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(getActivity(), FreeSearchActivity.class);
startActivity(intent);
}
});
return constraintLayout;
}
}
내가 이미지를 클릭로서, 내 코드가 다른 여러 활동을 시작한다을 제공합니다. 내 코드에서는 Activity에 아무 것도 전달하지 않으므로 직렬화 오류의 출처를 이해할 수 없습니다. 내가 뭔가를 직렬화하는 유일한 순간은 단편 물마루에 항목 목록을 전달할 때입니다. 그러나 여기서 일어나는 일과 어떻게 연관되어 있습니까?
감사 무리
는 Btw은 내가 여기를 직렬화하려고 사실이었다 경우 로그 캣이 지적하는 문제를 이해합니다. 내가 그 객체를 직렬화하는 유일한 시간은 (사실 drawable을 포함하고있다.) 다른 조각에 있으며 잘 동작한다. 그것은 나에게 어떤 오류도주지 않는다. 드로어 블은 BTW 자원
에서 로그 캣을 제공
12-26 08:17:52.853 5129-5129/com.chronocrops.chronocropps E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.chronocrops.chronocropps, PID: 5129
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.chronocrops.chronocropps.Model.Crop)
at android.os.Parcel.writeSerializable(Parcel.java:1822)
at android.os.Parcel.writeValue(Parcel.java:1770)
at android.os.Parcel.writeList(Parcel.java:926)
at android.os.Parcel.writeValue(Parcel.java:1719)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:838)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1542)
at android.os.Bundle.writeToParcel(Bundle.java:1232)
at android.os.Parcel.writeBundle(Parcel.java:878)
at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:157)
at android.os.Parcel.writeTypedArray(Parcel.java:1462)
at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:617)
at android.os.Parcel.writeParcelable(Parcel.java:1791)
at android.os.Parcel.writeValue(Parcel.java:1697)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:838)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1542)
at android.os.Bundle.writeToParcel(Bundle.java:1232)
at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4604)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3934)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.io.NotSerializableException: android.graphics.drawable.BitmapDrawable
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1233)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1597)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1558)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1227)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
at android.os.Parcel.writeSerializable(Parcel.java:1817)
at android.os.Parcel.writeValue(Parcel.java:1770)
at android.os.Parcel.writeList(Parcel.java:926)
at android.os.Parcel.writeValue(Parcel.java:1719)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:838)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1542)
at android.os.Bundle.writeToParcel(Bundle.java:1232)
at android.os.Parcel.writeBundle(Parcel.java:878)
at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:157)
at android.os.Parcel.writeTypedArray(Parcel.java:1462)
at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:617)
at android.os.Parcel.writeParcelable(Parcel.java:1791)
at android.os.Parcel.writeValue(Parcel.java:1697)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:838)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1542)
at android.os.Bundle.writeToParcel(Bundle.java:1232)
at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4604)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3934)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
편집 :
에 해당하는 조각을 반환/** *는 {@link FragmentPagerAdapter} * 섹션/탭 중 하나를/페이지. 그래서이 문제에 대한 대답을
Crop abacaxi = new Crop("Harvest begins in 10th of June",
getResources().getDrawable(R.drawable.abacax1),
"Marvila",
"Ananas comosus");
자르기 객체
public class Crop implements Serializable {
private String specieHarvest;
private Drawable specieImage;
private String specieLocation;
private String specieName;
public Crop(String specieHarvest, Drawable specieImage, String specieLocation, String specieName) {
this.specieHarvest = specieHarvest;
this.specieImage = specieImage;
this.specieLocation = specieLocation;
this.specieName = specieName;
}
public String getSpecieHarvest() {
return specieHarvest;
}
public Drawable getSpecieImage() {
return specieImage;
}
public String getSpecieLocation() {
return specieLocation;
}
public String getSpecieName() {
return specieName;
}
}