2014-05-12 50 views
0

我試圖保存ParseObject。當Parse創建類時,值和所需的行似乎不會被添加。無法保存延伸ParseObject的類

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

有沒有這樣做,而不是調用把每個值的短呢?假設我將值傳遞給構造函數,並且只爲ParseObject類調用put()。像這樣:

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

回答

2

ParseObject的子類應該只有一個零參數構造函數。從documentation

子類的parseObject

要創建的parseObject子類:

  1. 聲明延伸的parseObject一個子類。
  2. 添加@ParseClassName註釋。它的值應該是你要傳入ParseObject構造函數的字符串,並且使得所有未來的類名引用都是不必要的。
  3. 確保您的子類具有公共默認(即零參數) 構造函數。您不得修改此 構造函數中的任何ParseObject字段。
  4. 在調用Parse.initialize()之前,在您的 應用程序構造函數中調用ParseObject.registerSubclass(YourClass.class)。

現在你應該做的是這樣的:

@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(); 

讓我知道如果你設法得到它的工作,在我代碼上面的作品很好

+0

是。它現在通過添加零參數構造函數。但是現在我必須三次調用put(),是否有一個更簡短的方法呢?(我在問題的最後添加了它) – Zen

+0

您可以添加一個三參數設置器,將它們設置爲一次調用。稍後我可以用一個例子來擴展我的答案 –

+0

我曾嘗試使用setter,併爲該類調用saveInBackground,但這並沒有起作用。它在上面的save()方法中 – Zen