AlertDialog
을 AsyncTask
에 전화하려고합니다. 이 코드를 작성했지만 작동하지만 AlertDialog
의 항목을 선택한 다음 uiHandler.getLooper().quit();
을 호출하여 코드 처리를 계속하면 AlertDialog
은 멈 춥니 다 (작업이 완료 될 때까지 닫히지 않고 머물러 있음). 그러나 backgroundUI는 계속 처리합니다. 나는 무한 루프가 끝나기 전에 AlertDialog
에 dismiss()
메서드를 수행 할 시간이 없기 때문이라고 생각합니다. 제발,이 문제를 해결하도록 도와주세요. 이 방법은 doInBackground
에서만 수행해야합니다.AlertDialog 핸들을 doInBackground에 사용하십시오.
@Override
protected Void doInBackground(Void... arg0) {
Looper.prepare();
final Handler uiHandler = new Handler();
uiHandler.post(new Runnable() {
public void run() {
AlertDialog.Builder chooser = new AlertDialog.Builder(ctx);
facultyChooser.setTitle("Choose")
.setCancelable(false)
.setItems(faculties, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
uiHandler.getLooper().quit();
}
})
.create()
.show();
}
});
Looper.loop();
}
추신 : 쉽게 읽을 수 있도록 전체 코드가 아닙니다.
doInBackground는 데이터를 구문 분석합니다. AlertDialog를 호출하는 날짜에 따라 달라 지므로 사용자가 옵션을 선택하고 구문 분석을 계속합니다. post 실행에서 나는 saved 파싱 된 데이터이고 close AlertDialog는 poseExecute 메서드에서 sence가 없다. – AskQuestion