當前位置:首頁 » 安卓系統 » android判斷dialog

android判斷dialog

發布時間: 2023-02-20 23:21:29

① Android如何判斷當前窗口是Activity還是Dialog

Activity是Android四大組件之一,而Dialog不是Android的組件,Activity用於實現一個功能性窗口,而Dialog用於做出一些提示及一些選擇性操作,兩者應用的場景是不同的。

在程序中把這個窗口對象獲取到,通過instanceof來判斷這是對象是歸屬於Activity還是Dialog.

② Android 全局彈窗(Dialog)快速實現

項目中 雲信IM同一帳號,在多處登錄時,要實現互踢功能。

在收到被踢通知時,彈窗提示用戶被踢,點擊繼續跳轉到登錄界面,取消則關閉App

由於不知道用戶會在哪個界面操作時被踢,接受通知的那個Activity有可能已經失去上下文,導致空指針異常!從而無法 Toast 或 彈窗。

能實現 全局Dialog 就好了!

由於退出App的時候,要清除之前所有的Activity,其實就是退出登錄功能。

我採用 集合法 來實現的退出登錄 ,在BaseActivity中記錄所有打開過的Activity,然後遍歷清除。

然後在 BaseActivity 中調用 addActivity() ,不在贅述!

如果能獲取到用戶當前觀看的界面,然後將上下文傳過去,就可以實現全局Dialog

當前頁面也就是棧頂Activity,也就是最後添加的那個Activity。如下:

然後在使用的地方獲取

即:

注意:之所以返回AppCompatActivity,而不是Activity,
是因為彈出Dialog 需要 supportFragmentManager ,Activity 獲取不到

以上就可以實現全局Dialog了。

另外,上述Dialog是用DialogFragment寫的,感興趣可閱 《DialogFragment 去除內容區稜角背景(不規則圓角)》 ,附有工具類及用法。

③ Android如何獲取當前窗口的對象判斷它是Activity的類對象還是Dialog的類對象

您說具體點,什麼情況下獲取當前窗口的對象。
如果是在一個activity里獲取dialog彈出來沒有就是if(dialog!=null&&dialog.isshowing){//就是當前窗口是dialog界面 dialog.this就是當前窗口對象}
eles{//是當前activity 為窗口對象, activity.this}

熱點內容
編譯不成功怎麼辦 發布:2025-05-16 10:35:54 瀏覽:610
如何修改密碼找回 發布:2025-05-16 10:35:53 瀏覽:568
怎麼才能編譯本書 發布:2025-05-16 10:27:47 瀏覽:757
ssd伺服器電腦 發布:2025-05-16 10:26:25 瀏覽:827
水果忍者源碼 發布:2025-05-16 10:26:22 瀏覽:472
python中ord函數 發布:2025-05-16 10:14:25 瀏覽:340
電腦啟動後無法連接伺服器 發布:2025-05-16 10:06:39 瀏覽:984
jar包編譯過程 發布:2025-05-16 10:03:37 瀏覽:679
選舉源碼 發布:2025-05-16 09:58:59 瀏覽:749
超級訪問陳小春應采兒 發布:2025-05-16 09:43:29 瀏覽:479