안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
ProgressDialog를 Thread와 Handler를 이용하여 구현했습니다.
정상적으로 동작 합니다만..
제 어플에서는 사용했던 프로그레스 다이어로그를 다시 사용하는 일이 생깁니다.
코드는 아래와 같구요..
제가 궁금한 것은.. 프로그레스 다이어로그를 다시 불렀을 때.
모든 값을 초기화 하고 싶습니다.
예를 들어..
70%까지 진행하던 상태에서 취소를 눌렀다면.. 다음에 프로그레스 다이어로그를 사용할때 70%부터가 아닌 0%부터 시작하게 하고 싶습니다.
또 100%까지 완료되어서 다이어로그가 종료되고, 그 다이어로그를 다시 사용했을 때 0%부터 시작하고 싶습니다.
도움 부탁드립니다.
ProgressDialog를 Thread와 Handler를 이용하여 구현했습니다.
정상적으로 동작 합니다만..
제 어플에서는 사용했던 프로그레스 다이어로그를 다시 사용하는 일이 생깁니다.
코드는 아래와 같구요..
제가 궁금한 것은.. 프로그레스 다이어로그를 다시 불렀을 때.
모든 값을 초기화 하고 싶습니다.
예를 들어..
70%까지 진행하던 상태에서 취소를 눌렀다면.. 다음에 프로그레스 다이어로그를 사용할때 70%부터가 아닌 0%부터 시작하게 하고 싶습니다.
또 100%까지 완료되어서 다이어로그가 종료되고, 그 다이어로그를 다시 사용했을 때 0%부터 시작하고 싶습니다.
도움 부탁드립니다.
protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_SMS_ID: pd = new ProgressDialog(EscortService.this); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setMessage("SMS will be sent after 10 seconds & You can cancel it"); pd.setCancelable(true); pd.setMax(10); pt = new ProgressThread(handler); pt.start(); return pd; default: return null; } } final Handler handler = new Handler() { public void handleMessage(Message msg) { int total = msg.getData().getInt("total"); pd.setProgress(total); if (total >= 10) { dismissDialog(DIALOG_SMS_ID); pt.setState(ProgressThread.STATE_DONE); pd.dismiss(); } } }; private class ProgressThread extends Thread { final static int STATE_DONE = 0; final static int STATE_RUNNING = 1; Handler mHandler; int mState; int total; ProgressThread (Handler h) { mHandler = h; } public void run() { mState = STATE_RUNNING; total = 0; while (mState == STATE_RUNNING) { try { sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Message msg = mHandler.obtainMessage(); Bundle b = new Bundle(); b.putInt("total", total); msg.setData(b); mHandler.sendMessage(msg); total++; } } public void setState(int state) { mState = state; } }