2011-08-29 2 views
2

안녕하세요 AlertDialog/Toast에 대한 질문이 있습니다. 사용자가 버튼을 클릭하면 "You are right"라는 메시지가 1 초 동안 표시됩니다. 토스트/alertdialog를 사용하여 이것을 구현할 때 실행하지만, dailog가 꺼지기 전에 onclick 메서드에서 다음 명령을 시작합니다. 이 문제를 어떻게 해결할 수 있습니까?대화 메시지가 닫힐 때까지 다른 명령을 일시 중지하는 방법

+0

나는 이것이 나 자신을 알아 차렸기 때문에 두려운 질문이다. 안드로이드는 응답을 "기다릴"것이라고 생각 하겠지만 응답을 기다리고 있음에도 불구하고 프로그램은 계속 실행됩니다. – Jack

+0

잠시 동안 대화 상자가 닫히는 동안 스레드가 잠자기 상태가됩니다. –

+1

UI 스레드를 잠자기로하면 사용자가 – Jack

답변

1

토스트를 사용하는 경우 토스트가 표시되는 동안 작업을 연기하려면 Handler을 사용하십시오.

대화 상자를 사용할 때 "Okey"버튼에 onClickListener을 구현하십시오.

+0

을 클릭 할 때 응답하지 않습니다. 사용자가 클릭 할 때까지 일시 중지되기 때문에 대화 상자에는 아무런 문제가 없습니다. 그러나 메시지를 표시하기 위해 토스트를 기다리면 기다리지 않습니다. 그리고 아무 것도 바람직하지 않은 다음 명령을 계속 실행합니다. 스레드를 사용하여 일시 중지하면 대화 상자가 응답하지 않게됩니다. 처리기를 사용하면 어떻게 다른지, 코드 스 니펫으로 설명 할 수 있습니까? – Nikhil

0

해당 수신기에서 AlertDialog 뒤에 오는 코드를 입력해야합니다. 예를 들어, 경고 대화 상자 다음에 응답을 기반으로 실행하려는 코드가 여러 개있는 경우 해당 코드를 다른 메소드로 이동하십시오. 그런 다음 positiveButton 수신기 (또는 음수 단추 수신기)에서 방금 만든 해당 메서드에 호출을 추가합니다. 또는 청취자에게 모두 그것을 밀어 넣을 수는 있지만 코드를 관리하기 어렵게 만듭니다. 여기

+0

아니요 respnse .. 아무런 소리도 듣지 않는 다른 문장이 실행되기 전에 대화가 나타나야하고 이동해야합니다 – Nikhil

2

내가 핸들러 객체를 사용하여 그것을 어떻게입니다 ---

공용 클래스 ToastActivity는 활동 {

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Handler mHandler = new Handler(); 
    for(int i=10;i>=1;i--) 
    { 
     Toast.makeText(this, ""+i, Toast.LENGTH_SHORT).show(); 
    } 
    mHandler.postDelayed(new Runnable(){public void run(){ 
    LinearLayout t=(LinearLayout)findViewById(R.id.l); //This task is delayed by 21 sec. 
      t.setBackgroundColor(Color.CYAN); 
     } 
    }, 21000);   
} 

} 토스트가 사라진 후 토스트 후

문이 실행될를 확장합니다.

+0

길이가 짧음의 축배가 2 초 동안 표시되기 때문에 최소 대기 시간은 약 20000ms, 그래서 21000ms를 기다리는 것은 하드 코드 된 방법이지만 올바른 일입니다. –

관련 문제