日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Button.setOnClickListener(OnClickListener l) 原理

發布時間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Button.setOnClickListener(OnClickListener l) 原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【轉自】http://www.iteye.com/topic/635466

使用Button 可能都會監聽之 當其被點擊 就會有函數負責回調 那么其到底是怎么實現的呢?

?今天要做的就是摸清楚之 為了減少不必要的麻煩 打算extends EditText 并在其上設立監聽器

??

[代碼 步驟]

1. 定義Edit2Text 且extends EditText

Java代碼??
  • public?class?Edit2Text?extends?EditText?{??
  • ????OnTextChangedListener?changedListener;??
  • ??????
  • ????TextWatcher?tWatcher;??
  • }??
  • ??

    2. 定義其上的監聽器:OnTextChangedListener 并定義函數:onChanged() 用于執行具體回調

    Java代碼??
  • public?static?interface?OnTextChangedListener?{??
  • ????????public?void?onChanged(Edit2Text?e2t,?String?text);??
  • ??????????
  • ????}??
  • ?

    Java代碼??
  • 需要注意的?這幾行代碼的修飾關鍵字:??
  • ??
  • 1.?static?:使其能夠脫離Edit2Text而存在??
  • ??
  • 2.?interface?:?使其自動填充其內部函數??
  • ??
  • 3.?“void?onChanged(Edit2Text?e2t,?String?text)”?中的第一個參數e2t?用于做分別?具體奧妙?后面再細說??
  • ?

    3.? 設定監聽器

    Java代碼??
  • public?void?setOnChangedListener(OnTextChangedListener?l){??
  • ????????changedListener?=?l;??
  • ????}??
  • ??

    4. 定義TextWatcher 當字符內容改變 通知監聽器

    ?* 定義TextWatcher'

    Java代碼??
  • tWatcher?=?new?TextWatcher(){??
  • ??
  • ????????????@Override??
  • ????????????public?void?afterTextChanged(Editable?s)?{??
  • ????????????????//?TODO?Auto-generated?method?stub??
  • ??????????????????
  • ????????????}??
  • ??
  • ????????????@Override??
  • ????????????public?void?beforeTextChanged(CharSequence?s,?int?start,?int?count,??
  • ????????????????????int?after)?{??
  • ????????????????//?TODO?Auto-generated?method?stub??
  • ??????????????????
  • ????????????}??
  • ??
  • ????????????@Override??
  • ????????????public?void?onTextChanged(CharSequence?s,?int?start,?int?before,??
  • ????????????????????int?count)?{??
  • ????????????????//?TODO?Auto-generated?method?stub??
  • ????????????????updateText(s.toString());??
  • ????????????}??
  • ??????????????
  • ????????};??
  • ??????????
  • ????????this.addTextChangedListener(tWatcher);??
  • ??

    * 通知監聽器

    Java代碼??
  • private?void?updateText(String?s){??
  • ????????changedListener.onChanged(this,?s);??
  • ????}??
  • ??

    5. 如何使用

    Java代碼??
  • public?class?Edit2TextTest?extends?Activity?{??
  • ????/**?Called?when?the?activity?is?first?created.?*/??
  • ????@Override??
  • ????public?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????setContentView(R.layout.main);??
  • ??????????
  • ????????Edit2Text?e2t?=?new?Edit2Text(this);??
  • ????????setContentView(e2t);??
  • ??????????
  • ????????e2t.setOnChangedListener(new?Edit2Text.OnTextChangedListener(){??
  • ??
  • ????????????@Override??
  • ????????????public?void?onChanged(Edit2Text?e2t,?String?text)?{??
  • ????????????????//?TODO?Auto-generated?method?stub??
  • ????????????????Log.d("TAG","[String:]"+text);??
  • ????????????}??
  • ??????????????
  • ????????});??
  • ????}??
  • }??
  • ??

    6. emulator 運行截圖:

    ?*?

    ?

    * Log 信息:

    Java代碼??
  • D/dalvikvm(??674):?GC?freed?223?objects?/?8848?bytes?in?108m??
  • D/TAG?????(??941):?[String:]i?am??
  • D/TAG?????(??941):?[String:]i?am??
  • D/TAG?????(??941):?[String:]i?am?e??
  • D/TAG?????(??941):?[String:]i?am?ed??
  • D/TAG?????(??941):?[String:]i?am?edi??
  • D/TAG?????(??941):?[String:]i?am?edit??
  • D/TAG?????(??941):?[String:]i?am?edit2??
  • D/TAG?????(??941):?[String:]i?am?edit2t??
  • D/TAG?????(??941):?[String:]i?am?edit2te??
  • D/TAG?????(??941):?[String:]i?am?edit2tex??
  • D/TAG?????(??941):?[String:]i?am?edit2text??
  • D/TAG?????(??941):?[String:]i?am?edit2text,??
  • D/TAG?????(??941):?[String:]i?am?edit2text,??
  • D/TAG?????(??941):?[String:]i?am?edit2text,?h??
  • D/TAG?????(??941):?[String:]i?am?edit2text,?he??
  • D/TAG?????(??941):?[String:]i?am?edit2text,?hel??
  • D/TAG?????(??941):?[String:]i?am?edit2text,?hell??
  • D/TAG?????(??941):?[String:]i?am?edit2text,?hello??
  • D/TAG?????(??941):?[String:]i?am?edit2text,?hello!??
  • ?


    總結

    以上是生活随笔為你收集整理的Button.setOnClickListener(OnClickListener l) 原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。