寫彈窗Dialog容易犯的小錯誤

平時在主要改業務代碼多,類似彈窗也就拖拖以前的代碼,稍微改改、這次重新手寫一個彈窗,漏洞百出,還是基礎不夠紮實~

前提:自定義Dialog繼承AlerDialog

問題1:點擊彈出彈窗,有dialog陰影效果,但是佈局沒有顯示。

原因:沒有重寫onCreate方法,setContentView要設置在onCreate方法中,手誤寫在構造函數裏了...

解決辦法:setContentView設置在onCreate方法

問題2:彈窗顯示,但是外部傳入的數據沒有顯示到UI上。

原因:重寫show方法時,先super.show,再接收外部數據。一旦調用了super.show,oncreate就會回調。這樣的順序導致oncreate中的initView代碼在執行時還未拿到外部數據,所以顯示的內容是空的。比如TextView的標題~

解決辦法:調整代碼順序,重寫show方法時,先賦值數據,再寫super.show。參考“super.show與oncreate”的執行順序原理,梳理出“先賦值再initview”的效果。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章