我正在尝试创建一个将更改对象的应用程序:Class的状态:出勤率,从1到0,反之亦然,通过2个按钮(开始和停止)。
然后,另一台设备会读取更改以检查出勤情况。 (不是问题,但可能有用)
我尝试搜索教程或示例或视频但无法执行此操作。有人可以帮我这个吗?
startAttdBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(AttendanceActivity.this, "Attendance taking starts now. Click STOP to end session.", Toast.LENGTH_LONG).show();
ParseQuery<ParseObject> query = ParseQuery.getQuery("Attendance");
// Retrieve the object by id
query.getInBackground("v4nWkoFlmZ", new GetCallback<ParseObject>() { //retrieve serverID instead of object from parse
public void done(ParseObject Attendance, ParseException e) {
if (e == null) {
Attendance.put("Status", 1);
Attendance.saveInBackground();
}
}
@Override
public void done(ParseObject parseObject, com.parse.ParseException e) {
}
});
}
});
stopAttdBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(AttendanceActivity.this, "Attendance taking ended. Please wait...", Toast.LENGTH_LONG).show();
ParseObject attendance = new ParseObject("Attendance");
attendance.put("Status", 0);
attendance.saveInBackground();
//startActivity(intentAttdResult);
}
});
答案 0 :(得分:0)
启动代码看起来很好,只要ObjectId与现有项匹配,就应该更新Attendance对象。也许可以向saveInBackground()
添加一个回调,以确认它是否有效并且没有出现任何错误。
至于你的停止代码,我想你会想要使用objectId修改现有行的相同模式。
只需注意,您不必先获取对象...您可以修改该单个字段并另存为Parse将执行“补丁”,即只需进行更改即可。因此,如果您使用正确的ID创建一个ParseObject并更改状态并调用saveInBackground()
它也可以正常工作并为您节省额外的查询命中率。
答案 1 :(得分:0)
您的GetCallback
错了。您已实现了两个done()
方法。只有空的一个被调用,因为它具有@Override
符号。这就是GetCallback
应该是什么样的
new GetCallback<ParseObject>() {
@Override
public void done(ParseObject Attendance, ParseException e) {
if (e == null) {
Attendance.put("Status", 1);
Attendance.saveInBackground();
}
}
});