ParseObject子类不能在构造函数中进行更改

时间:2014-09-17 17:08:36

标签: android constructor parse-platform subclass

我有一个ParseObject子类,其构造函数尝试使用新的UUID设置字段:

@ParseClassName("Results")
public class Results extends ParseObject {
    public static final String FIELD_UUID = "uuid";

    public Results() {
        // Default constructor
        setUuid();
    }

    public String getUuid() {
        return getString(FIELD_UUID);
    }

    public void setUuid() {
        UUID uuid = UUID.randomUUID();
        put(FIELD_UUID, uuid.toString());
    }

    ...
}

但是,显然我无法在构造函数中调用setUuid(),因为发生了以下错误:

java.lang.IllegalStateException: A ParseObject subclass default constructor must not make changes to the object that cause it to be dirty.

我希望每次创建新的Results对象时自动设置UUID,而不是创建新对象,然后调用setUuid()。这可能吗,还是有解决方法?

1 个答案:

答案 0 :(得分:1)

指针肯定是要走的路。

我发现最好的方法是使用EventBus传递整个ParseObjects,你会在我对这个问题的回答中找到一个例子:Getting Parse Object ID from onListItemClick

这非常简单,省去了额外查询以找到传递对象的麻烦。