Android延遲自動關閉Dialog
阿新 • • 發佈:2019-01-04
一般情況下,dialog可以設定positivebutton,negetiveButton,但是有時候為了展示進度,可以做一個假程序來顯示一個progressDialog。當然,也可以依照如下方法在後臺做一個程序監控器向handler傳送標誌位。
定義一個靜態變數,作為標誌符,重寫handler的handleMessage方法,用於接收從其他執行緒傳回的訊息。private static int MSG_DISMISS_DIALOG = 0; private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if(MSG_DISMISS_DIALOG == msg.what){ if(null != mProgressDialog){ if(mProgressDialog.isShowing()){ Log.i(TAG, "handler get mesage"); mProgressDialog.dismiss(); finish(); } } } } };
為按鈕新增click監聽器的時候,插入一個progressDialog,並且進行顯示。save_new_password.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mProgressDialog = new ProgressDialog(context); mProgressDialog.setMessage("正在儲存中,請稍候"); mProgressDialog.show(); mHandler.sendEmptyMessageDelayed(MSG_DISMISS_DIALOG, 8000); Log.i(TAG, "is show"); } });
向handler傳送一個延遲訊息,引數1位識別符號,引數2為延遲時間,單位為毫秒,當msg.what==MSG_DISMISS_DIALOG(事先定義好的標誌位)的時候,立即執行讓對話方塊消失的方法,並且關閉當前activity。