2012-09-07 1 views
0

를 진행 할 때 내가안드로이드 : 실행 바 대화

진행률 표시 줄이 100 %로 이동 http://www.mkyong.com/android/android-progress-bar-example/이 대화 상자가 닫혀 있지만, 건배는 여전히 계속 나타납니다이 웹 사이트를 기반으로 대화를 할 핸들러를 중지 할 수 없습니다. 막대가 100 %가되면 progressHandler가 계속 루핑을 실행하는 것으로 나타났습니다.

이 문제를 어떻게 해결할 수 있습니까? 원하는 것 : 진행률 표시 줄이 100 %가되면 대화 상자가 닫히고 토스트가 표시되고 닫힙니다.

Thread background = new Thread(new Runnable() { 
@SuppressWarnings("null") 
public void run() { 
try { 

    while (dialog.getProgress() <= dialog.getMax()) { 
    // wait 500ms between each update 
    Thread.sleep(100); 
    // active the update handler 
    progressHandler.sendMessage(progressHandler.obtainMessage()); 
} 


} catch (java.lang.InterruptedException e) { 
    // if something fails do something smart 
    Toast.makeText(getApplicationContext(), "Error Occurs",Toast.LENGTH_LONG).show(); 
} 
} 
}); 

// start the background thread 
background.start(); 
} 

// handler for the background updating 
Handler progressHandler = new Handler() { 
    public void handleMessage(Message msg) { 
    dialog.incrementProgressBy(increment); 

    if(dialog.getProgress()==100){ 
    editor.putInt("lastestSummaryNoSent",summary.getCurrentSummaryNo()); 
    editor.commit(); 
    dialog.dismiss(); 
    Toast.makeText(getApplicationContext(), "Update Finished", Toast.LENGTH_LONG).show(); 
    } 


} 
}; 

답변

0

이 오류

Looper.prepare라고하지 않은 스레드()는 토스트의 당신이 배경 내부에 설치했기 때문에

은 내부 핸들러를 만들 수 없습니다 실. 캐치 프레이즈에서 토스트를 꺼내면 갈 수 있습니다.

+0

답변 해 주셔서 감사합니다. 그건 그렇고, 이것은 질문에 대한 나의 실수입니다. 수정 된 질문은 내 코드에 오류가 없다는 것입니다. 에뮬레이터에서 실행할 수 있습니다. 그래서 이미 오류 설명을 삭제했습니다. 실수로 죄송하지만 도움을 주셔서 대단히 감사합니다. :) –