Android:如何使用Class <! - ?在Parcelable中扩展Activity - >作为变量类型

时间:2013-12-16 23:33:54

标签: android class 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 个答案:

答案 0 :(得分:2)

您可以使用parcel.writeString(student.getClas().getName());student.setClas(Class.forName(in.readString());

答案 1 :(得分:1)

Class是可序列化的,因此您可以使用writeSerializablereadSerializable。然后,您必须将其强制转换回Class<? extends Activity>。大多数IDE会给你一个不安全的强制警告,但是没有一种很好的方法可以避免这种警告。