我在我的Android应用程序中使用Parse数据库。我对程序ConnectDatabse.java
中控件流动的方式感到困惑。这是代码:
public class ConnectDatabase extends Activity {
public static int LOGIN_STATUS;
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public static boolean authenticate(Context c, String email, String password) {
Log.d("Message", email+" & "+password);
Parse.initialize(c, "IFm3T3f7445F8fRILTcO", "HTwH2gycHQMS7LpyAf43mud");
ParseUser.logInInBackground(email, password, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException e) {
// TODO Auto-generated method stub
Log.d("Inside done", "Msg: " + e);
if (user != null) {
LOGIN_STATUS = 1;
Log.d("LOGIN_STATUS value", Integer.toString(LOGIN_STATUS));
}
else {
LOGIN_STATUS = 0;
}
}
});
Log.d("After done(..)" , Integer.toString(LOGIN_STATUS));
if(LOGIN_STATUS == 1) return true;
else return false;
}
}
我的LoginActivity.java
代码是:
public void login(View v) {
AutoCompleteTextView emailInput = (AutoCompleteTextView) findViewById(R.id.email);
EditText passwordInput = (EditText) findViewById(R.id.password);
String email = emailInput.getText().toString();
String password = passwordInput.getText().toString();
if(ConnectDatabase.authenticate(this, email, password) == true) {
Toast toast = Toast.makeText(getApplicationContext(), "Login Successful", Toast.LENGTH_LONG);
toast.show();
}
else {
Toast toast = Toast.makeText(getApplicationContext(), "Login Unsuccessful", Toast.LENGTH_LONG);
toast.show();
}
}
在logcat窗口中,它首先显示“Message”标签,然后是“After done(..)”,然后是“Inside done”,然后是“LOGIN_STATUS value”= 1
答案 0 :(得分:1)
您已要求在后台完成任务,因此您的程序将在后台完成该任务时继续执行其余任务。你可能想要某种类型的监听器或回调方法,你可以在完成任务时调用它来执行其他任务,如果你需要在执行某段代码之前依赖某些事情。
答案 1 :(得分:0)
我在解析API的文档中找到了解决方案。这是我的最终ConnectDatabase.java
:
public static boolean authenticate(Context c, String email, String password) throws ParseException {
Log.d("Message", email+" & "+password);
Parse.initialize(c, "IFmI83T3f7445F8fRILTcO", "HTwH2gycHQMSDvLpyAf43mud");
ParseUser.logIn(email, password);
return true;
}
并且在LoginActivity.java
中我捕获了ParseException,如果找不到用户或者出现网络错误,将抛出ParseException。