2

im ein Anfänger in Java und Android, bekomme ich die folgen:Object java.io.StreamCorruptedException: Falsches Format: 0 Lutscher und marshmalow

"java.io.StreamCorruptedException: Falsches Format: 0"

wenn ich versuche, das Objekt zurückzulesen. aber ich bekomme es nur auf Lollipop und Marshmallow-Geräte, wenn ich dies bei Nougat (7.1) laufen habe ich überhaupt kein Problem. irgendwelche Vorschläge?

public class MainActivity extends AppCompatActivity { 

public final String FILE_NAME = "FILE_NAME"; 
private List<Item>; 
private ReadWriteFunctions readWriteFunctions = new ReadWriteFunctions(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final Bitmap defaultBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.no_pic); 

    //Read from internal storage 
    items =readWriteFunctions.readObj(this,FILE_NAME); 
    if (items == null){//if the file don't exist it returns null 
     items = new ArrayList<>(); 
     items.add(new Item(false,"",defaultBitmap)); 
     Log.d("readObj", "Created new list"); 
    } 

Class Code:

public class ReadWriteFunctions { 


public ArrayList<Item> readObj(Context context, String fileName) { 
    ArrayList<Item> arrayList; 
    try { 
     FileInputStream fis = context.openFileInput(fileName); 
     ObjectInputStream ois = new ObjectInputStream(fis); 
     arrayList = (ArrayList<Item>) ois.readObject(); 
     ois.close(); 
     return arrayList; 
    }catch (IOException | ClassNotFoundException e){ 
     e.printStackTrace(); 
     return null; 
    } 
} 

public void writObj(Context context,String fileName,Object obj) { 
    try { 
     FileOutputStream fos = context.openFileOutput(fileName,Context.MODE_PRIVATE); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(obj); 
     oos.close(); 
     Log.d("writObj", "Saved"); 
    }catch (IOException e){ 
     e.printStackTrace(); 
     Log.d("writObj", "Save Fault"); 
    } 

} 

}

public class Artikel implementiert Serializable {

private boolean itemChecked; 
private String itemText; 
private transient Bitmap itemPicture; 


public Item(Item item) {//Constructor that receive item 
    this.setItemChecked(item.isItemChecked()); 
    this.setItemText(item.getItemText()); 
    this.setItemPicture(item.getItemPicture()); 

} 

public Item(boolean itemChecked, String itemText, Bitmap itemPicture) { 
    this.itemChecked = itemChecked; 
    this.itemText = itemText; 
    this.itemPicture = itemPicture; 
} 


public boolean isItemChecked() { 
    return itemChecked; 
} 

public void setItemChecked(boolean itemChecked) { 
    this.itemChecked = itemChecked; 
} 

public String getItemText() { 
    return itemText; 
} 

public void setItemText(String itemText) { 
    this.itemText = itemText; 
} 

public Bitmap getItemPicture() { 
    return itemPicture; 
} 

public void setItemPicture(Bitmap itemPicture) { 
    this.itemPicture = itemPicture; 
} 



private void writeObject(java.io.ObjectOutputStream out) throws IOException { 

    itemPicture.compress(Bitmap.CompressFormat.PNG, 100, out); 
    out.defaultWriteObject(); 

} 

private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { 

    itemPicture = BitmapFactory.decodeStream(in); 
    in.defaultReadObject(); 

} 

}

+0

Beitrag Item.readObject –

+0

posted den Artikel Klasse –

+0

was gut ist, dass Sie jetzt den Fehler entfernt ... [MCVE] –

Antwort

1

nur die Art und Weise der Veröffentlichung i das Problem für jedermann lösen Wer bekomme das gleiche Problem in der Zukunft.

an:

public class Item implements Serializable 

i geändert: diese Zeile:

private boolean itemChecked; 

zu dieser Zeile:

private Boolean itemChecked; 

wie ich weiß, Primitive als boolean sind Serializable so ich weiß nicht, warum es machte einen Unterschied, auch ich verstehe nicht, warum es auf Nougat arbeitete und nicht für LollipoparbeiteteMarshmallow. aber es funktioniert jetzt gut. Wenn jemand weiß warum, freue ich mich zu hören.

Verwandte Themen