好吧,我正在尝试在parse.com中的表中添加新行,并获取objectID。我认为没有任何方法会在插入一行后立即返回ID。因此,我首先插入了该行,并尝试使用where条件来获取ID。但是它不起作用-查询获取ID时无法在表中找到该行;其返回的null对象。但是如果我浏览表格,我可以看到表格中的行。
下面是代码。在这里,我使用两种方法一种插入新行,另一种用于获取ID。代码位于按钮的单击查看事件中。
public void clkLogin(View v)
{
String user = txtUser.getText().toString();
String pas = txtPass.getText().toString();
saveUserToCloud(user , pas);
getCloudId(user , pas);
}
private void saveUserToCloud(String us,String ps)
{
ParseObject testObject = new ParseObject("tblxxx");
testObject.put("userName", us);
testObject.put("password", ps);
testObject.saveInBackground();
}
private void getCloudId(final String user,final String pasw)
{
Toast.makeText(this, user +"|" + pasw, 2000).show();
ParseQuery<ParseObject> query = ParseQuery.getQuery("tblxxx");
query.whereEqualTo("userName", user);
query.getFirstInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e)
{
if (object == null)
{
Log.d("scoren", "not found");
}
else
{
Log.d("scoren", "--found");
String myIdInCLoud = object.getObjectId().toString();
}
}
});
}
不能正常工作的可能原因是什么?另外,还有其他方法可以获取ID吗?
替换testObject.saveInBackground();
为
testObject.saveInBackground(new SaveCallback()
{
@Override
public void done(ParseException e) {
if(e==null){
//saved successfully
getCloudId(user , pas);
}
}
});
上面的内容将确保仅在将行保存到Parse之后才获取objectId。
希望这行得通。:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句