У меня заканчиваются идеи о том, почему моя реализация parcelable создает исключение ClassCastException.Я хотел бы знать, почему оно вызывает исключение и находит способы его исправить. Пожалуйста, дайте мне знать, если мне все еще не хватает информации, чтобы вы, ребята, помогли мне.
Класс IdModelDTO
public class IdModelDTO implements Parcelable {
private String type;
private String surname;
private String givenName;
private String middleName;
private String birthDate;
protected IdModelDTO(Parcel in) {
givenName = in.readString();
middleName = in.readString();
surname = in.readString();
birthDate = in.readString();
type = in.readString();
}
public static final Creator<IdModelDTO> CREATOR = new Creator<IdModelDTO(){
@Override
public IdModelDTO createFromParcel(Parcel in) {
return new IdModelDTO(in);
}
@Override
public IdModelDTO[] newArray(int size) {
return new IdModelDTO[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(givenName);
dest.writeString(middleName);
dest.writeString(surname);
dest.writeString(birthDate);
dest.writeString(type);
}
@Override
public String toString() {
return "IdModelDTO{" + "givenName='" + givenName + '\''
+ ", middleName='" + middleName + '\'' +
"surname='" + surname + '\'' +
"birthdate=''" + birthDate + '\'' +
"type='" + type + '\'' + '}';
}
Здесь я использую его как связку.Я даже могу зарегистрировать его как связку перед отправкой на следующую операцию:
public void checkMplusRespCodes() {
// Check if response codes are OK/Created:
if(governmentIdRespCode == null){
Log.d(TAG, "Government Id Response code: " + governmentIdRespCode );
}
if(saveSelfieResponse == null){
Log.d(TAG, "saveSelfieResponse: " + saveSelfieResponse);
}
else if(governmentIdRespCode != null && saveSelfieResponse != null){
if(governmentIdRespCode.equals("200") && saveSelfieResponse.equals("200")){
//Create bundle here, then pass it to view:
//Bundle idModelBundle = new Bundle();
//idModelBundle.putParcelable(THISIDMODEL, thisIdModel);
//viewContract.showNextActivity(idModelBundle);
Log.d(TAG, " checkMplusRespCodes: " + idModelDTO.toString());
Bundle idModelBundle = new Bundle();
idModelBundle.putParcelable(THISIDMODEL, idModelDTO);
viewContract.showDoneLoading();
viewContract.showNextActivity(idModelBundle);
}
}
Затем, по неконтактности, он вызывает исключение ClassCastException:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test1);
/* */
Intent previousIntent = getIntent();
if(previousIntent.getExtras() != null){
Bundle previousExtras = previousIntent.getExtras();
if(previousExtras != null){
IdModelDTO test = previousIntent.getParcelableExtra(THISIDMODEL);
if(test != null){
Log.d(TAG, " asd: " + test.toString());
}
/* Retrieve: */
}
}else{
//proceed.
}
Любая помощь будетвысоко ценится.
РЕДАКТИРОВАТЬ: Это журнал метода, в то время как я установил объект Parcelable в виде пакета:
checkMplusRespCodes: IdModelDTO{givenName='test', middleName='asd'surname='Test'birthdate=''axx'type='asxd'}
Исключение происходит в nextActivity, гдеоно кастуется:
IdModelDTO test = previousIntent.getParcelableExtra(THISIDMODEL);