2011-04-26 4 views
0

내 앱이 시작될 때 표시되는 알림 팝업이 있습니다. 사용자가 계속 읽을 수 있도록 5 초 동안 계속 단추를 회색으로 표시 한 다음 사용자가 계속 사용할 수 있도록 사용하도록 설정합니다.POSITIVE_BUTTON ("계속")을 5 초 동안 사용 중지하십시오.


if (alertDialog == null) { 
    alertDialog = new AlertDialog.Builder(this).setPositiveButton("Continue", 
        new AlertDialog.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          //continue with the app 
         } 
        }).create(); 
        alertDialog.setTitle("My Title"); 
        alertDialog.setView(myView); 
       } 
       if ((!alertDialog.isShowing())) { 
        alertDialog.show(); 
        alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); 
       } 

버튼을 false로 설정 한 후 다시 true로 설정할 수 없습니다. Thread.sleep (5000l)을 사용하고 내 대화 상자를 만들려고했습니다. 그들 중 Niether가 일했습니다. 내 목표를 달성하려면 어떻게해야합니까?

감사합니다, 아카 쉬

답변

4

UI 요소가 모두 완료 사용자 코드에서 콜백 후 한 번에 렌더링됩니다. 이것은 단지 지연을 추가하는 것이 도움이되지 않는 이유입니다.

당신은 스레드를 시작 할 수 있습니다 또는 AsyncTaskdoInBackground 방법은 (당신이 확인 필드에 카운터를 표시 할 수 있도록, 아마 루프) 카운트 다운 후 onPostExecute에있는 버튼을

의사를 가능하게한다 -code :

MyAsyncTask extends AsyncTask { 
    doInBackground() { 
     for (int i = 5; i > 0 ; i ++) { 
      publishProgress (i); 
      Thread.sleep(1000); 
     } 
    } 

    onProgressUpdate(int i) { 
     okButton.setText(i); 
    } 

    onPostExecute() { 
     okButton.setText("Ok"); 
     okButton.enable(); 
    } 
} 
+0

감사합니다. 그것은 매력처럼 작동합니다. 그러나 AsyncTask를 여러 번 실행할 수있는 방법이 있습니까? 이 기능은 사용자가 게임을 시작하면 팝업을 읽습니다. 하지만 그 사이에 메인 메뉴로 가서 게임을 다시 시작하면 (실제로 게임을 종료하지 않고) 계속 버튼이 바로 표시됩니다. onClick 메서드에서 myAsyncTask.execute()를 호출하면 예외가 발생합니다 (작업은 한 번만 수행 할 수 있음). 여러 번 작업을 실행할 방법이 있습니까? 감사합니다 – AkasH

+0

예, 그냥 새로운 MyAsyncTask(). execute를 호출하는 대신, 새로운 MyAsyncTask를 매번 생성합니다 : new MyAyncTask(). execute(); ' –

+0

ahh nevermind가이를 해결하고 인스턴스에서 호출했습니다. 이제 그 모든 것이 좋고 고쳐졌습니다. 고마워요 Heiko. – AkasH