2014年6月19日 星期四

[Android]事件處理


事件處理的機制

   當使用者對手機進行各種操作時,即會產生對應的事件(Event),例如按下按鈕時,會產生對應的 OnClick事件。
   若要處理任何事件,必須準備一個能處理事件的監聽物件(或稱監聽器,Listener),然後將之登錄到來源物件中,那麼當來源物件有事件發生時,就會自動呼叫相對應的監聽事件來進行處理。

 不懂嗎? 為了抓小偷,所以我們在家中裝了監視器,若沒有監視器監看,那就 沒~有~畫~面~



JAVA 的介面(Interface)


   在 Android中,是以 JAVA的介面(Interface)來規範事件處理的方法,簡單說就是凡是要成為某類事件的監聽物件時,就要需要提供符合其介面規定格式的方法。例:按一下(OnClick)的事件,對應規範就是OnClickListener界面,該介面必須要規定了監聽物件提供的 onClick() 方法的規格,我們必須要專寫 onClick() 的方法才能處理「按一下」的事件。

注意:這裡稱的面(Interface)跟使用者介面(User Interface)是不同的唷~~~


※下面的範例將介紹實作介面以及監聽器使用方法:

//這就是實作 監聽器Listener 唷~~~~~~
class MyOnClickListener implements OnClickListener{ 
    //這裡撰寫監聽物件的處理方法,就是按下按鈕後要做啥~
    public void onClick(View v){ 
        switch(v.getId()){
        //按鈕1 要做啥~
        case R.id.btn1: 
            textView1.setText("textview1");
            break;
        //按鈕2 要做啥~
        case R.id.btn2: 
            textView2.setText("textview2");
            break;
        }
    }
}
private MyOnClickListener myOnClickListener = new MyOnClickListener();

//登錄就是下面這兩行啦~~~~~
//this代表 目前的物件,也就是勿前執行的方法所屬的物件 
button1.setOnClickListener(this); 
//這裡寫myOnClickListener馬耶通~~~
button2.setOnClickListener(myOnClickListener); 
/*
為何這樣寫?
因為在同一個類別內無法實作同一個方法兩次唷~~~~~~
物件都可以用陣列的方式來達到大量控制唷~~~~~~
*/

實作 (Implement) 介面其實只是一種宣告而已,真正要做得是:

  1. 撰寫符合該介面的規格 (方法名稱、參數、傳回值)的方法(method) 
  2. 向來源物件登錄自己成為該事件的監聽物件


 不懂嗎? 人類想要看的見,上帝必須要實作"眼睛"。上帝忘記實作時,你就會看不見五顆鑽石!!!!!

沒有留言:

張貼留言