當程式中有許多部分需要同樣功能時我們會將此功能方法化
拉出來寫成一個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…需要時下面留言
我再另行整理出來

你的文章幫助我很多,謝謝. 我在自學Android,可以請問你一個功能要怎樣來判斷該寫成 一個方法,還是class還是Activity嗎? 如能回覆相當謝謝了XD
嗯~這個問題我覺得我來回答其實不是很適合,我是非資工出身的,單興靠興趣在學ANDROID,沒有許多本科該有的基本理論概念。 但如果是我自已的經驗的話,一個Activity本身就一定是一個Class,當為了解決單一class中的問題時,我會先使用method,跟據MVC架構進行切割。 如果它的普遍性夠大,我需要在多個class中都使用同一方法時,我有時就會把它拉出來使用。 另外,如果某個方法它太長了,長到我覺得放在class裡面會干擾閱讀程式的流程時,我也會把它拉出來獨立。 如果希望提供完整的解決方案給其他人使用的話,還可以學著怎麼包成liberary。 謝謝你的回應,本來寫文章只是給自已備份以後可以快速拉回來的,因此能幫到大家是十分開心的~!
謝謝:)