close

當程式中有許多部分需要同樣功能時我們會將此功能方法化
拉出來寫成一個method或是class以供不同的情況中使用
但如果是Dialog要模組化的話,要怎麼製作呢?

先講講為什麼Dialog要模組化吧~
有的dialog只是提示,當然是寫一個算一個。 可是有的dialog是選單式的
甚至我很無聊的把一堆設定功能全塞在Dialog裡面
搞的Dialog進去之後還有三階分支可選
所以當然不想只用copy的在不同的地方去維護兩個內容一樣的超大dialog。

模組化是一個不錯的選擇
模組化首先遇到的問題是怎麼回傳?
因為dialog要等按下畫面中的按鍵後才能作動作
而method中的碼早就跑完了,所以不能用retur進行回傳
若沒被包住的話,還可以直接呼叫其他method來作事
可是一但模組化之後,被包起來了,就不能再往外去進行呼叫的動作

所以我把dialog寫成一個Activity來使用
利用Activity的setResult 與Intent配合來進行回傳的動作
在呼叫dialog模組時,使用startActivityForResult來執行
並建立onActivityResult 來接回傳動作即可。

 

接著遇到的第二個問題是,開一個Activity後,畫面與dialog不同
會造成使用者操作上的不習慣。
我首先使用的作法是,將Activity的背景設為透明,讓畫面看起來與一般的dialog無異
(透明的方式網上找很快!)
接著要處理當dialog按下back鍵之後,會先回到一個什麼都沒有的activity中
我在這裡對最初階的dialog設定了setOnDismissListener的處理,要它同時關掉包住的activity,並回傳要回傳的東西

這樣一來,dialog就可以模組化了

 

程式碼的部分…我還在趕code…需要時下面留言
我再另行整理出來 

arrow
arrow
    全站熱搜

    alderis 發表在 痞客邦 留言(3) 人氣()