AndroidDev 板


LINE

※ 引述《zxc190 (卡卡)》之銘言: : 今天我在一個A class有個 function : public static void ShowAlert(String msg,Activity activity){ : AlertDialog.Builder alert = new AlertDialog.Builder( activity ); : alert.setTitle(""); : alert.setMessage(msg); : alert.setPositiveButton("確定", new DialogInterface.OnClickListener() { : @Override : public void onClick(DialogInterface arg0, int arg1) { : } : }); : alert.show(); : } : 這樣以後我只想秀alert 就可以A.ShowAlert("訊息",Activity); : 現在問題來了 如果我想要在一些狀況下按完確定後可以另外做一些事情 : 我要如何Override按完後的function 其實很簡單,寫一個callback就解決惹 首先宣告一個interface public interface OnDialogListener{ public void OnDialogClick(); } 接著宣告一個變數 private OnDialogListener mOnDialogListener; 在宣告一個註冊的方法 public void setOnDialogListener(OnDialogListener listener){ mOnDialogListener = listener; } 然後就可以在這個類別使用它惹 假設你的類別是A類別 public class A{ public interface OnDialogListener{ public void OnDialogClick(); } private OnDialogListener mOnDialogListener; public void setOnDialogListener(OnDialogListener listener){ mOnDialogListener = listener; } public static void ShowAlert(String msg,Activity activity){ AlertDialog.Builder alert = new AlertDialog.Builder(activity); alert.setTitle(""); alert.setMessage(msg); alert.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { //當你按下確定以後 就會執行你想要執行的動作 //判斷是否有註冊 如果沒註冊就不用執行 if(mOnDialogListener != null){ mOnDialogListener.OnDialogClick(); } } }); alert.show(); } } 好了 接著就是怎麼使用A類別這個callback 假設現在有一個B類別 class B { private A a; public B(){ a = new A(); a.setOnDialogClickListener(new OnDialogClickListener(){ public void OnDialogClick(){ //就是在這邊執行當你按下確定的時候想做的事情 } }); } } 這樣就是一個簡單的callback 但是只有對一個註冊有效 後面還有很多變化 例如可以獨立出一個類別專門讓人在註冊 當所有註冊的物件 在某些事情發生變化的時候 就可以群體通知 當然android你也可以用廣播來完成 (如果需要我在寫一個範例for多個註冊的) 這也是一種設計模式 叫做"觀察者模式" ps. 程式碼沒跑過 可能有那裡漏掉 再告知 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.25.228
※ 文章網址: http://webptt.com/m.aspx?n=bbs/AndroidDev/M.1410759030.A.D92.html
1F:推 zxc190: 感謝指導! 09/15 14:19
2F:推 zxc190: 實做出來了 感謝! 只是我function是宣告成static 09/15 14:50
3F:→ zxc190: 所以變量也要是static 沒處理好會變成按確定都做那件事 09/15 14:52
4F:→ zxc190: 看來得把static拿掉每次都new比較安全了 再次謝謝 09/15 14:52







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP