顯示廣告
隱藏 ✕
看板 KnucklesNote
作者 Knuckles (站長 那克斯)
標題 [AndroidStudio] 使用載入中對話框 ProgressDialog
時間 2016-02-28 Sun. 13:15:02


若網路比較慢的話,在等待下載資料的時候畫面會像卡住了一樣
需要顯示個「載入中」的提示訊息

在頁面的 Activity 類別加上成員變數
    ProgressDialog mLoadingDialog;

加上兩個成員函式
    private void showLoadingDialog(){
        if(mLoadingDialog==null){
            mLoadingDialog = new ProgressDialog(this);
            mLoadingDialog.setMessage("載入中...");
        }
        mLoadingDialog.show();
    }

    private void dismissLoadingDialog(){
        if(mLoadingDialog!=null) {
            mLoadingDialog.dismiss();
        }
    }

在下載資料的程式開始前,執行
        showLoadingDialog();
顯示「載入中」的提示訊息

在下載資料的程式結束時,執行
                dismissLoadingDialog();
關閉「載入中」的提示訊息

執行結果,在下載資料完成前的畫面
[圖]


在載入完成之前,點擊圖示以外的灰色區域也可以關閉圖示
若不希望圖示被點擊關閉的話,可使用
mLoadingDialog.setCancelable(false);



□ 問題解決記錄

在 mLoadingDialog.dismiss(); 這行出現錯誤訊息 View not attached to window manager

解決方法,參考 http://stackoverflow.com/questions/22924825/view-not-attached-to-window-manager-crash
可能是在對話框尚未關閉時按了Home鍵跳出,導致對話框要關閉時找不到連結的Activity
要在 Activity 結束前手動關閉對話框
    @Override
    protected void onDestroy() {
        dismissLoadingDialog();
        super.onDestroy();
    }


--
※ 作者: Knuckles 時間: 2016-02-28 13:15:02
※ 編輯: Knuckles 時間: 2016-02-28 13:28:21
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 282 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇