无法保存扩展ParseObject的类

时间:2014-05-12 21:07:55

标签: android parse-platform

我试图保存ParseObject。当在Parse上创建类时,值和所需的行似乎没有被添加。

ParseDetailsItem

@ParseClassName("ParseDetailsItem")
public class ParseDetailsItem extends ParseObject
{

private String fName;
private String lName;
private int age;

    public ParseDetailsItem(String fName,String lName,int age)
    {
        super();

        this.fName = fName;
        this.lName = lName;
        this.age   = age;
    }
}

保存()

    s_fName = et1.getText().toString();
    s_lName = et2.getText().toString();
    s_age   = Integer.parseInt(et3.getText().toString());

    ParseDetailsItem t = new ParseDetailsItem(s_fName,s_lName,s_age);

    t.setfName(s_fName);
    t.setlName(s_lName);
    t.setAge(s_age);

    t.saveInBackground();

以前我一直在保存它,这似乎有用:

    pObject = new ParseObject("Details");
    pObject.put("fName",s_fName);
    pObject.put("lName",s_lName);
    pObject.put("Age",s_age);
    pObject.saveInBackground();

我想我错过了某个地方的put()方法,但不确定在哪里调用它?

修改 这有效,但这是唯一的方法吗?

    t.put("fName", s_fName);
    t.put("lName", s_lName);
    t.put("Age", s_age);

EDIT2

是否有更短的方法,而不是为每个值调用put?假如我将值传递给构造函数并仅为ParseObject-Class调用put()。像这样:

ParseDetailsItem t = new ParseDetailsItem(s_fName,s_lName,s_age);
t.saveInBackground();

1 个答案:

答案 0 :(得分:2)

ParseObject的子类应该只有一个零参数构造函数。来自documentation

  

对ParseObject进行子类化

     

创建ParseObject子类:

     
      
  1. 声明扩展ParseObject的子类。
  2.   
  3. 添加@ParseClassName注释。它的值应该是你的字符串   将传递给ParseObject构造函数,并使所有未来   类名称引用不必要。
  4.   
  5. 确保您的子类具有公共默认值(即零参数)   构造函数。您不能修改此中的任何ParseObject字段   构造
  6.   
  7. 调用ParseObject.registerSubclass(YourClass.class)   在调用Parse.initialize()。
  8. 之前的应用程序构造函数   

现在你应该做的是这样的事情:

@ParseClassName("ParseDetailsItem")
public class ParseDetailsItem extends ParseObject
{

    private String fName;
    private String lName;
    private int age;

    public ParseDetailsItem()
    {
        super();
    }

    public void setDetail(String fName,String lName,int age)
    {
        this.fName = fName;
        this.lName = lName;
        this.age   = age;
    }
}

然后调用它:

ParseDetailsItem t = new ParseDetailsItem();
t.setDetail(s_fName,s_lName,s_age);
t.saveInBackground();

如果你设法让它工作,请告诉我,在我的代码中,上面的工作正常