【发布时间】:2013-09-05 05:42:55
【问题描述】:
我有一个名为PageItem 的类,它有一个以Context 作为参数的构造函数:
PageItem(Context context)
{
super(context);
this.context = context;
}
PageItem 具有以下属性:
private int id;
private String Title;
private String Description;
public Newsprovider newsprovider;
public Topic topic;
Newsprovider 和 Topic 是我的应用程序的其他类,并具有以下构造函数:
Newsprovider (Context context)
{
super(context);
this.context = context;
}
Topic (Context context)
{
super(context);
this.context = context;
}
PageItem、Newsprovider 和 Topic 是 SQLiteOpenHelper 的子类。
我想用 Gson 反序列化 PageItem 数组,所以我写了:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(PageItem.class, new PageItemInstanceCreator(context));
Gson gson = gsonBuilder.create();
Pageitem pis[] = gson.fromJson(s, PageItem[].class);
PageItemInstanceCreator 定义为:
public class PageItemInstanceCreator implements InstanceCreator<PageItem>
{
private Context context;
public PageItemInstanceCreator(Context context)
{
this.context = context;
}
@Override
public PageItem createInstance(Type type)
{
PageItem pi = new PageItem(context);
return pi;
}
}
调试时,PageItem 实例具有正确的“MainActivity”作为上下文,而
但它的newsprovider 成员变量的context = null。
Gson 使用正确的构造函数创建了 PageItem 对象,但它使用默认的无参数构造函数创建了 Newsprovider 实例。我该如何解决这个问题?
【问题讨论】: