Ошибка при передаче Arraylist в другом действии - PullRequest
0 голосов
/ 21 июня 2020

Вот мое объявление

List lstProfilePicture = new ArrayList ();

Это мой код для вызова другого действия

Intent i = new Intent (LogoActivity.this, MenuActivity.class);

i.putExtra ("Profile", (Serializable) lstProfilePicture);

Это мой Профиль Class

publi c class Profile реализует Serializable {

private Long employeeCode;
private Bitmap employeePicture;

public Profile() {
}

public Profile(Long employeeCode, Bitmap employeePicture) {
    this.employeeCode = employeeCode;
    this.employeePicture = employeePicture;
}

public Long getEmployeeCode() {
    return employeeCode;
}
public void setEmployeeCode(Long employeeCode) {
    this.employeeCode = employeeCode;
}
public Bitmap getEmployeePicture() {
    return employeePicture;
}
public void setEmployeePicture(Bitmap employeePicture) {
    this.employeePicture = employeePicture;
}

} ​​

Вот мое сообщение об ошибке

/ AndroidRuntime: FATAL EXCEPTION: main Process: oras.liv.com.oras, PID: 21484 java .lang.RuntimeException: Parcelable обнаружил исключение IOException, записывающее сериализуемый объект

Как передать с растровым изображением в классе? Есть ли другой способ?

1 Ответ

0 голосов
/ 21 июня 2020

Преобразуйте его в массив байтов

Действие 1:

try {
    //Write file
    String filename = "bitmap.png";
    FileOutputStream stream = this.openFileOutput(filename, Context.MODE_PRIVATE);
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);

    //Cleanup
    stream.close();
    bmp.recycle();

    //Pop intent
    Intent in1 = new Intent(this, Activity2.class);
    in1.putExtra("image", filename);
    startActivity(in1);
} catch (Exception e) {
    e.printStackTrace();
}

В действии 2 загрузите растровое изображение:

Bitmap bmp = null;
String filename = getIntent().getStringExtra("image");
try {
    FileInputStream is = this.openFileInput(filename);
    bmp = BitmapFactory.decodeStream(is);
    is.close();
} catch (Exception e) {
    e.printStackTrace();
}
...