锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
闂錛氬湪鍋?/span>UI璁捐鏃訛紝閬囧埌涓涓棶棰橈紝灝辨槸褰撴垜鐐瑰嚮涓涓嚜瀹氫箟瀵硅瘽妗嗙殑澶嶉夋鏃訛紝鑷畾涔夊璇濇鐨勭埗鐣岄潰蹇呴』鍋氬嚭鐩稿簲鐨勬敼鍙橈紝榪樻湁錛岃嚜瀹氫箟瀵硅瘽妗嗘槸鍋氭垚鐨勭粍浠訛紝搴旂敤浜庡緢澶氬満鍚堬紙鏈夊緢澶氱殑鐣岄潰鐢ㄥ埌姝ゅ璇濇錛夛紱
//榪欐槸鑷畾涔夌殑瀵硅瘽妗嗭紝褰撲簨浠舵槸checkbox鏃訛紝璁╃埗鐣岄潰鍋?/span>//鍑烘敼鍙?/span>
Public class DialogBox implements ClickListener {
Public void onClick(event e){
}
}
//榪欐槸鐖剁晫闈紝浠栧脊鍑哄璇濇
Public class ParentFrame extends ParentClass{
Public void popDialogBox(){
DialogBox dialogbox = new DialogBox(this) ;
}
}
瑙e喅鏂規涓錛?/span>
鎴戞妸鐖剁晫闈㈢殑鐖剁被鏀瑰彉鎴愯嚜瀹氫箟鐨勭埗綾伙紝璁╃埗鐣岄潰緇ф壙鑷畾涔夌殑鐖剁被錛?/span>
Public class DialogBox implements ClickListener{
Private Ojbect object = null ;
Private CheckBox checkbox = new CheckBox() ;
Public DialogBox(Ojbect object){
this.object = object ;
}
Public void onClick(event e){
If(e == checkbox){
//褰撲簨浠舵槸checkbox鏃訛紝寮哄埗杞崲鎴?/span>Custom璋冪敤//update鏂規硶
((Custom)object).update();
}
}
}
//榪欐槸鑷畾涔夌被錛屽畠緇ф壙浜?/span>ParentClass,騫舵娊璞′簡涓?/span>update鏂?/span>//娉?/span>
Public abstact CustomClass extends ParentClass{
Public abstract void update() ;
}
Public class ParentFrame extends CustomClass {
Public void popDialogBox(){
DialogBox dialogbox = new DialogBox(this) ;
}
Public void update(){
//鐖剁晫闈㈢殑鏇存柊鎿嶄綔
}
}
榪欎釜瑙e喅鏂規紜疄瑙e喅鐨勯棶棰橈紝褰撹嚜瀹氫箟瀵硅瘽妗嗙偣鍑?/span>checkbox鏃訛紝紜疄浼氫嬌浠栫殑鐖剁晫闈㈠彂鐢熸敼鍙橈紝浣嗕粬鐨勭己鐐瑰お澶э細蹇呴』緇ф壙CustomClass鎵嶈兘鍏峰榪欐牱鐨勫姛鑳斤紝鑰屼笖涓昏鏄洜涓轟粬鏀瑰彉浜嗙戶鎵垮叧緋伙紝鍦?/span>ParentFrame鍜?/span>ParentClass涔嬮棿鍔犱簡涓灞傦紝榪欐牱浣胯﹀悎搴﹀姞澶т簡錛涜屼笖姣忔閮芥妸鑷韓鐨勫紩鐢ㄩ氳繃鏋勯犱紶榪囧幓錛?/span>new DialogBox(this)錛夛紝鍦?/span>dialogbox閭h竟榪樿寮鴻杞崲鍥炴潵錛岀‘瀹炰笉鏄粈涔堝ソ鍔炴硶J
瑙e喅鏂規浜岋細
//瀹氫箟CustomListener鎺ュ彛
Public interface CustomListener (){
Public void update() ;
}
Public class DialogBox implements ClickListener{
Private Ojbect object = null ;
Private CheckBox checkbox = new CheckBox() ;
Public DialogBox(Ojbect object){
this.object = object ;
}
Public void onClick(event e){
If(e == checkbox){
//褰撲簨浠舵槸checkbox鏃訛紝寮哄埗杞崲鎴?/span>Custom璋冪敤//update鏂規硶
((CustomListener)object).update();
}
}
}
//瀹炵幇浜?/span>CustomListener鎺ュ彛
Public class ParentFrame extends ParentClass implements CustomListener {
Public void popDialogBox(){
DialogBox dialogbox = new DialogBox(this) ;
}
Public void update(){
//鐖剁晫闈㈢殑鏇存柊鎿嶄綔
}
}
榪欎釜瑙e喅鏂規涔熸槸瑙e喅浜嗛棶棰橈紝灝ゅ叾瀵圭涓瑙e喅鏂規鑰岃█錛岃繖涓凡緇忎笉浼氭墦涔辯戶鎵垮叧緋伙紝浣嗘槸榪樻病鏈夎劚紱葷浜屼釜緙洪櫡錛?/span>
瑙e喅鏂規涓夛細
//瀹氫箟Listener鎺ュ彛
Public interface CustomListener(){
Public void update() ;
}
//瀹氫箟event鎺ュ彛
Public interface CustomEvent(){
Public void addCustomListener(CustomListener listener) ;
Public void removeCustomListener(CustomListener listner) ;
Public void notify() ;
}
Public class DialogBox implements ClickListener, CustomEvent {
Private List listenerList = new ArrayList() ;
Private CheckBox checkbox = new CheckBox() ;
Public DialogBox(Ojbect object){
this.object = object ;
}
Public void onClick(event e){
If(e == checkbox){
notify() ;
}
}
//娉ㄥ唽涓涓瀵熻?/span>
Public void addCustomListener(CustomListener listener) {
listenerList.add(listener) ;
}
//鍒犻櫎涓涓瀵熻?/span>
Public void removeCustomListener(CustomListener listner){
listenerList.remove(listener) ;
}
//璋冪敤鎵浠ユ敞鍐岀殑瑙傚療鑰?/span>
Public void notify() {
If(listenerList != null && !( listenerList.isEmpty)){
for(int I = 0 ; I < listenerList.size() ; I ++){
((CustomListener)listenerList.get(i)).update();
}
}
}
}
//瀹炵幇浜?/span>CustomListener鎺ュ彛
Public class ParentFrame extends ParentClass implements CustomListener {
Public void popDialogBox(){
DialogBox dialogbox = new DialogBox() ;
dialogbox. addCustomListener((CustomListener)this) ;
}
Public void update(){
//鐖剁晫闈㈢殑鏇存柊鎿嶄綔
}
}
絎笁涓В鍐蟲柟妗堟墠鏄瀵熻呮ā寮忔槸搴旂敤錛岃繖鎵嶆槸杈冧負鍚堢悊鐨勬柟妗堬紱
瑙傚療鑰呮ā寮忓簲鐢ㄥ墠鎻愭槸錛氭湁涓涓璞″嚭鍙戜簨浠舵椂錛屽叾浠栧璞′篃鍙戠敓鏀瑰彉錛涙槸涓竴瀵瑰鐨勫叧緋?/span>