2011-04-25 2 views
0

나는 안드로이드 마켓을위한 어플리케이션을 개발하기 위해 노력 해왔다. thta는 먼저 사용자가 계정에 로그인 할 것을 요구한다. 자격 증명을 확인하기 위해 데이터베이스에 대한 데이터 링크와 함께 코드를 아래에 정리했습니다. 그러나 응용 프로그램은 "로그인"버튼의 첫 번째 클릭에서 두 번째보기로 전환하지 않지만 가끔 두 번 이상 클릭하는 것처럼 보입니다. 나는 데이터베이스에서 데이터를 가져 와서 확인하는 데 시간이 걸리므로이를 해결할 방법을 말해 줄 수 있고 함께 BusyIndicator를 구현할 수 있습니까?Flex 4.5 모바일 로그인 양식을 2 번 클릭해야합니까?

<![CDATA[ 
      protected function login_btn_clickHandler(event:MouseEvent):void 
      { 
       var match:Boolean; 

       getEmployeesByNameResult.token = employeeService.getEmployeesByName(usr_nme_txtbox.text, pass_txtbox.text); 

       if (getEmployeesByNameResult.lastResult != null) 
       { 
        navigator.pushView(HomeView, getEmployeesByNameResult.lastResult.id); 
       } 
      } 
     ]]> 



<s:Button id="login_btn" width="100%" label="Login" 
          click="login_btn_clickHandler(event)"/> 

답변

1

showBusyIndicator는 Flex 응용 프로그램에서 사용되는 기본 서비스 클래스의 속성입니다. 이론적으로 안드로이드에서도 작동 할 것으로 기대하지만, 실제로는 모바일 앱에 마우스 커서가 있는지 확신 할 수 없습니다. 일부 애니메이션 "대기"객체를 갖기 위해 무언가를 사용할 수 있어야합니다.

어떤 서비스 등급을 사용하고 있습니까? (HTTPService, RemoteObject 또는 WebService?)

Flex의 서비스 클래스는 비동기식입니다. 귀하의 코드가 그것을 사용하려고 시도하는 것처럼 동기가 아닙니다. 그래서, 당신은이 코드를 실행하면

getEmployeesByNameResult.token = employeeService.getEmployeesByName(usr_nme_txtbox.text, pass_txtbox.text); 

if (getEmployeesByNameResult.lastResult != null) 
{ 
    navigator.pushView(HomeView, getEmployeesByNameResult.lastResult.id); 
} 

당신의 getEmployeesByNameResult.lastResult 값이 가장 가능성이 널 (null)입니다; 서비스 호출에 처리 시간이 0이고 대기 시간이 0 (두 가지 가능성은 거의 없음) 인 경우를 제외하고는 서비스에서 결과 이벤트를 청취해야합니다.

protected function login_btn_clickHandler(event:MouseEvent):void 
{ 
var match:Boolean; 

getEmployeesByNameResult.addEventListener(ResultEvent.RESULT, onResult); 
getEmployeesByNameResult.showBusyCursor = true; 
getEmployeesByNameResult.token = employeeService.getEmployeesByName(usr_nme_txtbox.text, pass_txtbox.text); 

} 

protected function onResult(event:ResultEvent):void 
{ 
if (getEmployeesByNameResult.lastResult != null) 
{ 
    navigator.pushView(HomeView, getEmployeesByNameResult.lastResult.id); 
}     
} 
+0

Flex 모바일 앱에서 비동기를 잊어 버린 것에 대한 내 바보 같은 실수를 한 것으로 보입니다. :-) – user723858

+0

@ user723858 기쁜이 도움; 그것을 정답으로 표시하십시오. 카르마 (Karma) 포인트를 얻을 수 있습니다. 나는 카르마 포인트를 얻을 것이고,이 질문을하는 미래의 사람들은 확증 된 해결책을 얻게 될 것이다. – JeffryHouser

관련 문제