2014-11-12 3 views
-1

내 안드로이드 응용 프로그램에서 구문 분석 데이터베이스를 사용하고 있습니다. 컨트롤이 내 프로그램에 흐르는 방식에 어리둥절 해합니다. 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(); 
     } 
    } 

"다음, 다음"후 (..) 다 "그것은 처음에"메시지 "태그, 내부 여기에 코드입니다 done "다음에"LOGIN_STATUS value "= 1

+1

** ** 비동기식 ** ** – rupps

+0

http://ideone.com/yVZP3Q – Selvin

답변

1

백그라운드에서 수행 할 작업을 요청 했으므로 백그라운드에서 작업이 수행되는 동안 프로그램이 나머지 작업을 계속 수행합니다. 특정 코드가 실행되기 전에 수행중인 작업에 의존해야하는 경우 작업을 수행 할 때 다른 작업을 수행 할 때 호출 할 수있는 일종의 리스너 또는 콜백 메소드가 필요할 수 있습니다.

+0

괜찮 았는지 이해해야합니다. 필자는 Activity에서 authenticate (..) 메소드를 호출하기 때문에 동일한 메소드에서 리턴 값을 기대할 수있다. done() 메서드는 아무 것도 반환하지 않으므로 어떻게 구현합니까? –

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을 잡은

.