Android: как пользоваться Class<? расширяет Activity> как тип переменной в Parcelable

У меня проблемы с записью и чтением переменной, тип которой Class<? extends Activity> но я мог бы найти любое решение для этого.

clas - имя переменной, тип которой Class<? extends Activity>, Я использую эту переменную для открытия связанной деятельности, когда студент нажимает на листинг

Там нет функции, как Parcelable.readClass() или же writeClass() Может кто-нибудь помочь, пожалуйста, чтобы решить эту проблему

Спасибо заранее

Вот мой Student.java

public class Student {
    private String id;
    private Class<? extends Activity> clas;

    ...

}

Здесь я создал ParcalebleStudent.java

public class ParcalebleStudent implements Parcelable {
    private Student student;

    ....

    private ParcalebleStudent(Parcel in) {
        student = new Student();
        student.setId(in.readString());
        student.setClas(in.readWhat?????????);//I need help here
    }

    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeString(student.getId());
        parcel.writeWhat???????(student.getClas());//and here

    }
}

2 ответа

Решение

Ты можешь использовать parcel.writeString(student.getClas().getName()); а также student.setClas(Class.forName(in.readString());

Class Serializable, так что вы можете использовать writeSerializable а также readSerializable, Затем вам придется отбросить его обратно Class<? extends Activity>, Большинство IDE будут предупреждать вас о небезопасных ролях, но не существует отличного способа сделать это так, чтобы избежать этого предупреждения.

Другие вопросы по тегам