Сделать ошибку класса Parcelable - PullRequest
2 голосов
/ 21 сентября 2010

Я пытаюсь сделать так, чтобы Task упаковывался в пакет для перехода от моего сервиса к активности, но у меня возникли небольшие проблемы при работе с ArrayList моего пользовательского типа.

Задача:

@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel prc, int arg1) {
    // TODO Auto-generated method stub
    prc.writeInt(id);
    prc.writeString(timeStamp_string);
    prc.writeString(timeToComplete_string);
    prc.writeTypedArray(resources.toArray(), PARCELABLE_WRITE_RETURN_VALUE);
}

Ресурс:

@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel prc, int flags) {
    // TODO Auto-generated method stub
    prc.writeInt(id);
    prc.writeString(timeStamp_string);
    prc.writeString(resourceType);
    prc.writeString(dataType);
    prc.writeString(value);
    prc.writeInt(taskId);
}

Это дает мне ошибку в функции prc.writeTypedArray внутри задачи:

Bound mismatch: The generic method writeTypedArray(T[], int) of type Parcel is not applicable for the arguments (Object[], int). The inferred type Object is not a valid substitute for the bounded parameter <T extends Parcelable>

Если Ресурсы реализуют Parcelable, тогда я не вижу, в чем проблема.

Редактировать: Я СЧИТАЮ, ЧТО ИСПРАВЛЕН ЭТУ ЧАСТЬ. Я использовал .writeParcelableList () INSTEAD. Может ли кто-то подтвердить, что это должно работать? ВОПРОС НИЖЕ ВСЕ ЕЩЕ ДЕЙСТВУЕТ.

Также, когда задание считывается из намерения действием, мне нужно выполнить некоторые вычисления, чтобы заполнить некоторые другие элементы данных. Какая функция там вызывается, чтобы я мог выполнить вычисления? Это readFromParcel (...) или конструктор, который принимает Parcelable в качестве параметра?

Спасибо

1 Ответ

3 голосов
/ 21 сентября 2010

toArray() возвращает тип Object[], поэтому вы получаете:

Объект не является допустимой заменой ограниченного параметра

Объект не расширяет Parcelable.Вы должны разыграть toArray() вызов:

(Resources[])resources.toArray()

Как вы сказали, так как Ресурсы реализуют Parcelable, это должно избавить вас от вашего исключения.

...