jadi saya mendapatkan ini di logcat:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.resources.student_list.Student)
Saya tahu ini berarti bahwa kelas siswa saya tidak bersambung, tetapi ini adalah kelas siswa saya:
import java.io.Serializable;
public class Student implements Comparable<Student>, Serializable{
private static final long serialVersionUID = 1L;
private String firstName, lastName;
private DSLL<Grade> gradeList;
public Student() {
firstName = "";
lastName = "";
gradeList = new DSLL<Grade>();
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public DSLL<Grade> getGradeList() {
return gradeList;
}
public void setGradeList(DSLL<Grade> gradeList) {
this.gradeList = gradeList;
}
public int compareTo(Student arg0) {
return this.lastName.compareTo(arg0.getLastName());
}
}
dan ini adalah kode yang menggunakan metode getIntent ():
public void onItemClick(AdapterView<?> parent, View viewClicked, int pos,
long id) {
Student clickedStudent = studentList.get(pos);
int position = pos;
Intent intent = new Intent(getActivity().getApplicationContext(), ShowStudentActivity.class);
Log.e("CINTENT","CREATED!!!");
intent.putExtra("clickedStudent",clickedStudent);
intent.putExtra("newStudentList",newStudentList);
intent.putExtra("position",position);
Log.e("putExtra","Passed");
Log.e("Start activity","passed");
startActivity(intent);
}
});
tolong bantu saya mencari tahu apa yang salah dengan ini.
di sini adalah seluruh LogCat:
04-17 16:12:28.890: E/AndroidRuntime(22815): FATAL EXCEPTION: main
04-17 16:12:28.890: E/AndroidRuntime(22815): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.resources.student_list.Student)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.os.Parcel.writeSerializable(Parcel.java:1181)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.os.Parcel.writeValue(Parcel.java:1135)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.os.Parcel.writeMapInternal(Parcel.java:493)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.os.Bundle.writeToParcel(Bundle.java:1612)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.os.Parcel.writeBundle(Parcel.java:507)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.content.Intent.writeToParcel(Intent.java:6111)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1613)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1422)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.app.Activity.startActivityForResult(Activity.java:3191)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:848)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.support.v4.app.Fragment.startActivity(Fragment.java:878)
04-17 16:12:28.890: E/AndroidRuntime(22815): at com.example.student_lists.MainActivity$DummySectionFragment$2.onItemClick(MainActivity.java:477)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.widget.AbsListView$1.run(AbsListView.java:3168)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.os.Handler.handleCallback(Handler.java:605)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.os.Handler.dispatchMessage(Handler.java:92)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.os.Looper.loop(Looper.java:137)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.app.ActivityThread.main(ActivityThread.java:4447)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.lang.reflect.Method.invokeNative(Native Method)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.lang.reflect.Method.invoke(Method.java:511)
04-17 16:12:28.890: E/AndroidRuntime(22815): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-17 16:12:28.890: E/AndroidRuntime(22815): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-17 16:12:28.890: E/AndroidRuntime(22815): at dalvik.system.NativeStart.main(Native Method)
04-17 16:12:28.890: E/AndroidRuntime(22815): Caused by: java.io.NotSerializableException: com.resources.student_list.DSLL$DNode
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
04-17 16:12:28.890: E/AndroidRuntime(22815): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
04-17 16:12:28.890: E/AndroidRuntime(22815): at android.os.Parcel.writeSerializable(Parcel.java:1176)
android
android-intent
serialization
pengguna2896762
sumber
sumber
DSLL
dan apaGrade
?Jawaban:
DSLL
Kelas Anda tampaknya memilikiDNode
kelas dalam yang statis, danDNode
tidakSerializable
.sumber
Caused by
baris terakhir . Itu biasanya akan menunjuk ke masalah spesifik. Semua bait jejak tumpukan lainnya mewakili pengecualian yang dibungkus di sekitar pengecualian "nyata" di bagian bawah jejak.Caused by: java.io.NotSerializableException:
Kelas OneThread Anda juga harus mengimplementasikan Serializable. Semua sub kelas dan sub kelas dalam harus mengimplementasikan Serializable .
ini bekerja untuk saya ...
sumber
Jika Anda tidak dapat membuat DNode serializable, solusi yang baik adalah menambahkan "transient" ke variabel.
Contoh:
Ini akan mengabaikan variabel saat menggunakan Intent.putExtra (...).
sumber
transient
kunci dalam Java digunakan untuk menunjukkan bahwa suatu bidang tidak boleh diserialisasi. Jawaban lengkap di sini: stackoverflow.com/a/910522/1306012jika Anda POJO berisi model lain di dalamnya yang juga harus mengimplementasikan Serializable
sumber
Bagi saya ini diselesaikan dengan membuat variabel dalam transient kelas.
Kode sebelumnya:
kode setelah
sumber
Masalahnya terjadi ketika kelas khusus Anda memiliki properti untuk beberapa kelas lain misalnya "Bitmap". Apa yang saya buat adalah mengubah bidang properti dari "foto Bitmap pribadi" menjadi "foto Bitmap sementara". Namun gambar kosong setelah saya mendapatkanIntent () dalam aktivitas penerima. Karena ini saya meneruskan kelas kustom ke maksud dan juga saya telah membuat array byte dari gambar dan meneruskannya secara terpisah ke maksud:
selectedItem adalah objek kustom saya dan getPlacePhoto adalah metodenya untuk mendapatkan gambar. Saya sudah mengaturnya sebelumnya dan sekarang saya mendapatkannya lebih dulu daripada mengubahnya dan membagikannya secara terpisah:
`
Kemudian dalam aktivitas penerima saya mendapatkan objek dan gambar sebagai array byte, mendekode gambar dan mengaturnya ke objek saya sebagai properti foto.
sumber
Pengecualian terjadi karena fakta bahwa salah satu kelas dalam atau kelas referensi lainnya tidak menerapkan implementasi serializable. Jadi pastikan bahwa semua kelas yang direferensikan harus mengimplementasikan implementasi serializable.
sumber
Saya juga fase kesalahan ini dan saya sedikit mengubah modelClass yang diimplementasikan antarmuka Serializable seperti:
Pada kelas Model itu juga mengimplementasikan antarmuka Parcelable dengan metode override writeToParcel ()
Kemudian baru saja mendapat kesalahan untuk "membuat pencipta" sehingga PENCIPTA adalah menulis dan juga membuat dengan modelclass contructor dengan argumen & tanpa argumen ..
Sini,
ArtistTrackClass -> ModelClass
Konstruktor dengan argumen Parcel "baca atribut kami" dan writeToParcel () adalah "tulis atribut kami"
sumber
kelas Grade juga harus mengimplementasikan Serializable
sumber
Perlu mengubah semua arraylist ke wif Serializable di kelas bean:
sumber
Saya menghadapi masalah yang sama, masalahnya adalah ada beberapa kelas dalam dengan kata kunci statis. Setelah menghapus kata kunci statis itu mulai bekerja dan juga kelas batin harus mengimplementasikan ke Serializable
Skenario masalah
Diselesaikan oleh
sumber
Dalam kasus saya saya harus menerapkan
MainActivity
sebagaiSerializable
juga. Karena saya perlu memulai layanan dariMainActivity
:sumber