tablayow를 유지하는 serializable을 구현하는 tablelayout이 있습니다. tablerows에는 edittext와 checkbox가 포함될 것입니다. 정확한 체크리스트와 같습니다.개체 직렬화 문제 Java
그러나 tablelayout (CheckList)을 직렬화하면 tablerows가 serizable이 아님을 알 수 있습니다. 이후에는 직렬화되도록 구현했습니다. 하지만 EditText와 CheckBox는 직렬화 할 수 없다고 알려줍니다.
어떻게 해결할 수 있습니까?
는 UPDATE : (Serializer.java)
public class Serializer {
public static byte[] serializeObject(Object o) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(o);
out.close();
// Get the bytes of the serialized object
byte[] buf = bos.toByteArray();
return buf;
} catch(IOException ioe) {
Log.e("serializeObject", "error", ioe);
return null;
}
}
public static Object deserializeObject(byte[] b) {
try {
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(b));
Object object = in.readObject();
in.close();
return object;
} catch(ClassNotFoundException cnfe) {
Log.e("deserializeObject", "class not found error", cnfe);
return null;
} catch(IOException ioe) {
Log.e("deserializeObject", "io error", ioe);
return null;
}
}
}
이것은 내가 체크리스트 직렬화하는 방법입니다
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putSerializable("checklist", Serializer.serializeObject(checklist));
intent.putExtra("checklist", bundle);
setResult(Activity.RESULT_OK, intent);
finish();
을 그리고 여기에 내가 직렬화하려고 방법은 다음과 같습니다
try {
Bundle extras = data.getExtras();
Bundle checklist_bundle = extras.getBundle("checklist");
byte[] bytes = (byte[]) checklist_bundle.getSerializable("checklist");
CheckList checklist = (CheckList) Serializer.deserializeObject(bytes);
} catch (Exception e) {
e.printStackTrace();
}
답장을 보내 주셔서 감사합니다. 검사 목록은 내가 만든 무언가의 항목 클래스를 확장하고 항목 클래스는보기 클래스를 확장합니다. 어떻게 확장 할 수 있습니까? –
또한 CheckList를 serialize하고 deserialize하는 방법에 대한 코드를 추가했습니다. 그것이 더 명확 해 지길 바랍니다. –
아무 것도 변경할 필요가 없습니다. 모든 클래스가''Serializable'을 구현하는지 확인하십시오. 기본 방법으로 작동하지 않는 한 읽기 및 쓰기 메소드를 작성할 필요가 없습니다. (필자는 기본 방법으로 절대로 실패하지 않았지만 정직하게도!) – corsiKa