Android 从分析类中删除整行
如何在android中从解析用户类中删除整行?我希望用户能够从我的应用程序中删除他们的帐户,如果他们删除他们的帐户,我希望能够删除他们的整个用户行 调用用户对象上的删除方法之一:Android 从分析类中删除整行,android,parse-platform,Android,Parse Platform,如何在android中从解析用户类中删除整行?我希望用户能够从我的应用程序中删除他们的帐户,如果他们删除他们的帐户,我希望能够删除他们的整个用户行 调用用户对象上的删除方法之一:delete(),deleteFinally(),deleteInBackground(),等等 例如: ParseUser user = ParseUser.getCurrentUser(); user.deleteInBackground(); ParseUser类是ParseObject的子类,因此它具有所有相同
delete()
,deleteFinally()
,deleteInBackground()
,等等
例如:
ParseUser user = ParseUser.getCurrentUser();
user.deleteInBackground();
ParseUser类是ParseObject的子类,因此它具有所有相同的删除方法。您可以查看API参考以了解更多信息。我想我会为您需要删除用户的稍微不同的情况提供额外的反馈。我使用Eric Amode给出的答案作为起点,但在运行测试时,我不得不删除该用户。基本目标是在用户注册后从解析数据库中删除该用户。这将使我不必在每次运行测试时都进入并删除用户。我最初在一个静态方法中使用上面的代码Eric Amode,但没有得到任何结果。因为我是在后台注册过程中创建用户的,所以我还必须在后台删除用户。其他人可能知道我应该使用的更好的方法,但下面是代码片段,其中包含了线程在后台工作时我所做的所有工作
user.signUpInBackground(new SignUpCallback() {
@Override
public void done(ParseException e) {
dlog.dismiss();
if (e != null) {
/**
* Show the error message
*/
Toast.makeText(RegisterActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
} else {
/**
* Start a new intent for the dispatch activity
*/
Intent intent = new Intent(RegisterActivity.this, DispatchActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
RegisterActivity.this.startActivity(intent);
/**
* Check to see if the username is ParseUser and immediately deletes from
* Parse database to allow repeated runs of the RegisterActivityEspressoTest
*/
if(etUsername.getText().toString().equals("ParseUser")){
ParseUser registerTestUser = new ParseUser();
registerTestUser.getCurrentUser().deleteInBackground();
}
}
}
});
接受的答案可能会由于在delete方法之后注销/清除本地数据存储失败而产生错误 1) 根据Parse的文档,delete()并不总是足以删除和注销用户。有时,即使在delete()调用之后,用户仍然通过本地数据存储登录,这会在用户下次打开应用程序时(或者只是在应用程序下次使用getCurrentUser()方法检查当前用户时)导致错误。相反,必须在delete函数的回调中调用注销,如下所示:
ParseUser currentUser = ParseUser.getCurrentUser();
currentUser.deleteInBackground(new DeleteCallback() {
public void done(ParseException e) {
if (e == null) {
currentUser.logOutInBackground();
} else {
//handle the error
}
}
});
这是违反直觉的,因为如果帐户已被删除,您可能会认为不必注销,但您确实需要注销
2) 还值得注意的是,只有在对用户进行身份验证时(使用login()、signup()或getCurrentUser()API调用),才能调用delete。从解析文档中:
具体来说,除非使用身份验证方法(如登录或注册)获取ParseUser,否则无法调用任何save或delete type方法。这确保只有用户可以更改自己的数据。