第二次单击登录按钮后,以 ParseUser 身份登录
Logging in as ParseUser works after second click on log in button
我想以 ParseUser 身份登录。一切正常,但在第二次单击按钮 Log in
之后。
private void openMainActivity(boolean loggedIn) {
if (loggedIn){
startActivity(new Intent(ParseStarterProjectActivity.this, MainPage.class));
finish();
}else{
initialize();
logInBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (logIn(username.getText().toString(),pwd.getText().toString())){
startActivity(new Intent(ParseStarterProjectActivity.this, MainPage.class));
finish();
}else{
Toast.makeText(getApplicationContext(),
"Failed to log in, try again.", Toast.LENGTH_LONG).show();
}
}
});
}
}
登录方式:
private boolean logIn(String username, String pwd) {
ParseUser.logInInBackground(username, pwd, new LogInCallback() {
public void done(ParseUser user, ParseException e) {
if (user != null) {
loggedIn=true;
} else {
loggedIn=false;
}
}
});
return loggedIn;
}
是时间问题吗?它没有立即从 EditText
获取值,可能是回调延迟?或者有什么想法?
问题是 ParseUser.logInInBackground()
是一个异步调用。
你告诉它开始登录过程,它会在代码与 Parse 服务器对话并获得响应后一段时间后完成。
然后您尝试使用 loggedIn
的值,然后再设置该值。
使用异步代码,您可以告诉它稍后在代码完成时做什么(public void done()
块)。您的 startActivity()
等代码应该在回调块内。
我想以 ParseUser 身份登录。一切正常,但在第二次单击按钮 Log in
之后。
private void openMainActivity(boolean loggedIn) {
if (loggedIn){
startActivity(new Intent(ParseStarterProjectActivity.this, MainPage.class));
finish();
}else{
initialize();
logInBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (logIn(username.getText().toString(),pwd.getText().toString())){
startActivity(new Intent(ParseStarterProjectActivity.this, MainPage.class));
finish();
}else{
Toast.makeText(getApplicationContext(),
"Failed to log in, try again.", Toast.LENGTH_LONG).show();
}
}
});
}
}
登录方式:
private boolean logIn(String username, String pwd) {
ParseUser.logInInBackground(username, pwd, new LogInCallback() {
public void done(ParseUser user, ParseException e) {
if (user != null) {
loggedIn=true;
} else {
loggedIn=false;
}
}
});
return loggedIn;
}
是时间问题吗?它没有立即从 EditText
获取值,可能是回调延迟?或者有什么想法?
问题是 ParseUser.logInInBackground()
是一个异步调用。
你告诉它开始登录过程,它会在代码与 Parse 服务器对话并获得响应后一段时间后完成。
然后您尝试使用 loggedIn
的值,然后再设置该值。
使用异步代码,您可以告诉它稍后在代码完成时做什么(public void done()
块)。您的 startActivity()
等代码应该在回调块内。