2010-12-29 21 views
13

bạn bè,java.io.NotSerializableException trong khi viết đối tượng Serializable vào bộ nhớ ngoài?

tôi đang sử dụng mã sau để viết Đối tượng có thể tuần tự sang bộ nhớ ngoài.

nó ném cho tôi lỗi java.io.NotSerializableException ngay cả đối tượng của tôi là serializable bất kỳ một hướng dẫn cho tôi những sai lầm tôi đang làm gì?

public class MyClass implements Serializable 
{ 

// other veriable stuff here... 
    public String title; 
    public String startTime; 
    public String endTime; 
    public boolean classEnabled; 
    public Context myContext; 

public MyClass(Context context,String title, String startTime, boolean enable){ 
      this.title = title; 
      this.startTime = startTime; 
      this.classEnabled = enable; 
      this.myContext = context; 

} 

public boolean saveObject(MyClass obj) { 

     final File suspend_f=new File(cacheDir, "test"); 

      FileOutputStream fos = null; 
      ObjectOutputStream oos = null; 
      boolean   keep = true; 

      try { 
       fos = new FileOutputStream(suspend_f); 
       oos = new ObjectOutputStream(fos); 
       oos.writeObject(obj); // exception throws here 
      } 
      catch (Exception e) { 
       keep = false; 


      } 
      finally { 
       try { 
        if (oos != null) oos.close(); 
        if (fos != null) fos.close(); 
        if (keep == false) suspend_f.delete(); 
       } 
       catch (Exception e) { /* do nothing */ } 
      } 


      return keep; 


     } 

} 

và gọi từ lớp hoạt động để lưu nó

MyClass m= new MyClass(this, "hello", "abc", true); 
boolean result =m.saveObject(m); 

bất kỳ trợ giúp sẽ được đánh giá cao.

Trả lời

53

Điều này không thành công do trường Ngữ cảnh trong lớp học của bạn. Các đối tượng ngữ cảnh không được tuần tự hóa.

Mỗi Serializable documentation - "Khi duyệt qua biểu đồ, đối tượng có thể gặp phải không hỗ trợ giao diện Serializable. Trong trường hợp này, NotSerializableException sẽ được ném và sẽ xác định lớp của đối tượng không tuần tự."

Bạn có thể xóa hoàn toàn trường Ngữ cảnh hoặc áp dụng thuộc tính thoáng qua cho trường Ngữ cảnh để không được sắp xếp theo thứ tự.

public class MyClass implements Serializable 
{ 
    ... 
    public transient Context myContext; 
    ... 
} 
+0

thì giải pháp là gì? bất kỳ ý tưởng? – UMAR

+1

Câu trả lời cập nhật liên quan đến nhận xét của bạn – JesusFreke

+0

vâng tôi đã xóa ngữ cảnh và hiện tại hoạt động tốt. cảm ơn. – UMAR

Các vấn đề liên quan