1. 程式人生 > >Dialog.dismiss()方法無效的解決方法

Dialog.dismiss()方法無效的解決方法

在最近的專案中使用WebView載入網頁,開始時show載入框,結束時dismiss載入框,但是載入框不消失:

private Dialog dialog;


web.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url,
                    Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
             dialog = CommonUtils.getCustomLoadingDialog(XXXXActivity.this
, "資料正在載入中,請稍後..."); dialog.show(); } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); dialog.dismiss();//在這裡時 } });

dialog中dismiss()方法原始碼如下:

public void dismiss() {
        if (Looper.myLooper() == mHandler.getLooper()) {
            dismissDialog();
        } else {
            mHandler.post(mDismissAction);
        }
    }

    void dismissDialog() {
        if (mDecor == null || !mShowing) {
            return
; } //我進行了debug除錯,到這裡發現mWindow已經Destroyed了,所以return if (mWindow.isDestroyed()) { Log.e(TAG, "Tried to dismissDialog() but the Dialog's window was already destroyed!"); return; } try { mWindowManager.removeView(mDecor); } finally { if (mActionMode != null) { mActionMode.finish(); } mDecor = null; mWindow.closeAllPanels(); onStop(); mShowing = false; sendDismissMessage(); } }

谷歌了很多,發現一個已經被android廢棄的彈出框顯示消失方法,解決程式碼如下:


private Dialog dialog;


web.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url,
                    Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                showDialog(1);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onPageFinished(view, url);

                dismissDialog(1);
            }
        });
    }

    @Override
    @Deprecated
    protected Dialog onCreateDialog(int id) {
        if (id == 1) {
            if (dialog == null) {
                dialog = CommonUtils.getCustomLoadingDialog(XXXXActivity.this, "資料正在載入中,請稍後...");
            }
            return dialog;
        }
        return super.onCreateDialog(id);

    }

相關推薦

EditText的setText()方法無效解決方法

save 自動保存 ces enabled 改變 restore edit 方法 ets 解決方法: view.setSaveEnabled(false); 原因: 安卓會自動保存某些view的狀態,旋轉屏幕或打開一個活動後,onSaveInstanceState會保存

Dialog設定背景透明無效,在安卓5.0系統上無效解決方法

困擾了大半天的一個問題,寫一個關閉按鈕突出的dialog,在eclipse上面寫的Demo,然後執行在魅族,紅米,華為手機上都沒問題,都能正常的突出按鈕(其中魅族手機和華為手機都是5.0以上的系統),

28.React使用map循環創建對象綁定click無效解決方法

char pan style 鉆石 function blog lec [] 創建對象 var RechargeBtnEle = React.createClass({ getInitialState: function() { return

IOS開發證書顯示“此證書的簽發者無效解決方法

tle dsm OS art popu 今天 phoenix 刪除 雙擊 猴子原創,歡迎轉載。轉載請註明: 轉載自Cocos2Der-CSDN。謝謝。 原文地址:

使用模板創建linux虛擬機網卡eth0無效解決方法

vm ESXI LINUX 問題描述:在使用linux虛擬機模板部署完系統後使用ifconfig –a ,沒發現eth0,發現eth1,在/etc/sysconfig/network/下有一個ifcfg-eth0的文件,但是沒有ifcfg-eth1的文件。 解決方案:方法一:在創建模板虛擬機時的時

IDEA代碼格式化快捷鍵無效解決方法

ctrl 解決方法 inf 方法 分享圖片 ide info 圖片 .com 在IDEA內,代碼格式化快捷鍵為:CTRL+ALT+L 之所以按了沒有反應,大多數時候是因為和其它應用的全局快捷鍵相沖突。   比如網易雲: IDEA代碼格式化快捷鍵無效解決方法。

Idea中Springboot熱部署無效解決方法

oot depend dev mat project bsp end 找到 pen 僅適用IDEA中,eclipse中不需要設置 一、開啟idea自動make功能 1 - Enable Automake from the compiler PRESS: CTRL + SH

chrome瀏覽器模擬手機端:jquery click()點選無效解決方法

$(".sku-wrap .ok").click(); chrome瀏覽器模擬手機端,在油猴外掛中寫JS程式碼,然後發現click()點選失效。 解決方法:jquery的click()方法失效,可以使用原生JavaScript的click方法。 首先需要將jquery物件轉化成JS物件:

父容器display:flex後,子元素的內部元素height:100%無效解決方法

父容器display:flex後,子元素的內部元素height:100%無效解決方法 解救辦法:父類容器position:relative;子元素:position:absolute;width:100%,height:100%; 效果圖: 程式碼如下:

Ubuntu 16.04 Fcitx配置中Trigger Input Method熱鍵無效解決方法

問題描述 我在Ubuntu 16.04中下載安裝了搜狗拼音輸入法,與鍵盤-英語(美國)切換使用。因為我用慣了Windows 10中切換輸入法的熱鍵Win+Space,便也把Fcitx配置中的Trigger Input Method熱鍵改成了Super+Space

移動端ios直接設定currentTime無效解決方法

前段時間做過一個專案,每個頁面設定了同一個背景音樂,但客戶要求音樂從一個頁面進入另一個頁面後,要接著上一頁面播放時間播放,所以進入新頁面後設置currentTime為上個頁面播放時間 但ios系統直接設定無效,在判斷音樂可播放時(canplay)再設定currentTime

td標籤寬度無效解決方法

下列表格程式碼,如何使td標籤使width屬性生效,並自動換行? <table  border="2" cellspacing="0" cellpadding="0"> ......

VMware複製ubuntu16虛擬機器時提示控制代碼無效解決方法

第一步: 找到如下圖所示檔案:(Ubuntu16-32為虛擬機器名稱,每個人設定的不一樣,注意) 第二步: 以記事本開啟第一步找到的檔案 第三步: 修改下面圖示的一行程式碼,將"TRUE"改為"

Internal Server Error 無法訪問請求的頁面,因為該頁的相關配置資料無效 解決方法

win+r 執行 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 重新註冊一下asp.net。 如果是vista作業系統,需要在dos命令視窗中執行以上的路徑,並且dos視窗必須是以管理員身份執行。否則會出現當前的操作需要

基礎連線已經關閉: 未能為 SSL/TLS 安全通道建立信任關係。 根據驗證過程,遠端證書無效------解決方法

Message = "基礎連線已經關閉: 未能為 SSL/TLS 安全通道建立信任關係。"   InnerException = {"根據驗證過程,遠端證書無效。"} 解決方法如下:   using System;using System.Collections.Gene

Eclipse Maven Build命令執行無效解決方法

現象右鍵專案- run as – maven install 時,控制檯沒有任何響應原因Jdk沒有配置maven的執行引數解決方法1.開啟eclipse的window選單:2.接著選定maven專案使用

angularJs a標籤重複點選無效解決方法

在A標籤上加入 ui-sref-opts="{reload:true}" 屬性ui-sref-opts="{reload:true}"起到重新整理當前超連結路由的作用例:<a href="javaScript:void(0);" ui-sref-opts="{reload:true}">提交<

FireFox下設定DIV的top和left無效解決方法

火狐瀏覽器和IE瀏覽器有很多衝突,往往在IE下正常的在火狐下就不正常了,這就需要程式去判斷,搞定他們相容問題!下面這段程式碼解決了在火狐下div設定top和left無效的BUG和在IE下滾動條無效的BUG------------------------------------

jQuery ajax使用$(this).parent()無效解決方法

$(".delStu").click(function () {                        td = $(this).parent().parent();                        if (confirm("您確認刪除麼")) {                    

Linerlayout background selector無效解決方法

Linerlayout xml屬性: <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"