在第二次单击登录按钮后,以ParseUser身份登录

时间:2015-01-11 11:26:15

标签: android login parse-platform

我想以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获得值,也许是回调延迟?或者任何想法?

1 个答案:

答案 0 :(得分:1)

问题是ParseUser.logInInBackground()是异步调用。

你告诉它开始登录过程,它会在代码与Parse服务器通话并获得响应后的一段时间后完成。

然后,您尝试在设置该值之前使用loggedIn的值。

使用异步代码,您可以告诉它在代码完成后要做什么(public void done()阻止)。您的startActivity()等代码应该在回调块中。