`
gryphone
  • 浏览: 427287 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Button.setOnClickListener(OnClickListener l) 原理

 
阅读更多

使用Button 可能都会监听之 当其被点击 就会有函数负责回调 那么其到底是怎么实现的呢?

 

今天要做的就是摸清楚之 为了减少不必要的麻烦 打算extends EditText 并在其上设立监听器

 

 

[代码 步骤]

1. 定义Edit2Text 且extends EditText

public class Edit2Text extends EditText {
	OnTextChangedListener changedListener;
	
	TextWatcher tWatcher;
}

 

 

 

2. 定义其上的监听器:OnTextChangedListener 并定义函数:onChanged() 用于执行具体回调

public static interface OnTextChangedListener {
		public void onChanged(Edit2Text e2t, String text);
		
	}

 

需要注意的 这几行代码的修饰关键字:

1. static :使其能够脱离Edit2Text而存在

2. interface : 使其自动填充其内部函数

3. “void onChanged(Edit2Text e2t, String text)” 中的第一个参数e2t 用于做分别 具体奥妙 后面再细说

 

 

3.  设定监听器

public void setOnChangedListener(OnTextChangedListener l){
		changedListener = l;
	}

 

 

4. 定义TextWatcher 当字符内容改变 通知监听器

 

* 定义TextWatcher'

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);

 

 

* 通知监听器

private void updateText(String s){
		changedListener.onChanged(this, s);
	}

 

 

5. 如何使用

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 信息:

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!

 

分享到:
评论

相关推荐

    简单计算器

    button5.setOnClickListener(operator5_1); button6.setOnClickListener(operator6); // caculateService =new CaculateService(); serviceIntent=new Intent(ActivityDemo.this,CaculateService.class); ...

    Android OnClickListener监听接口用法范例.rar

     button.setOnClickListener(//为按钮对象添加OnClickListener接口实现  //OnClickListener为View的内部接口,其实现者负责监听鼠标点击事件  new View.OnClickListener(){  public void onClick(View v){  ...

    如何呈现按钮(Button)之

    Buttonbtn=(Button)findViewById(R.id.button); Buttonbtn2=(Button)findViewById(R.id.button2); btn.setOnClickListener(listener); btn2.setOnClickListener(listener2);} OnClickListenerlistener=new ...

    QuizActivity

    QuizActivity 的Android源码,仅供参考。... import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View... mFalseButton.setOnClickListener(new View.OnClickListener() {

    android mars视频代码 download源码

    button1.setOnClickListener(new DownTextListener()); button2.setOnClickListener(new DownMP3Listener()); } class DownTextListener implements OnClickListener{ @Override public void onClick(View v) ...

    android listview 分页显示

    cl = new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btnLeft: leftView(); break; case R.id.btnRight: ...

    实现加减乘除等简单计算的Android计算器源码包

    fuhao[6].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub str=""; et.setText(str); vi=v; } }); fuhao[7].setOnClickListener...

    android实现打电话功能

    button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { String mobile = mobileText.getText().toString(); //拔打电话号码 //"android.intent.action.CALL" ...

    android简单计算器

    btPoint.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); if(str1.equals("")){ etResult.setText(""); }else{ ...

    Mar老师android视频源代码

    downloadMp3Button.setOnClickListener(new DownloadMp3Listener()); } class DownloadTxtListener implements OnClickListener{ public void onClick(View v) { HttpDownloader httpDownloader = new ...

    Android换肤Demo

    public class MyBtnListener implements OnClickListener{ private final int layout_id; public MyBtnListener(int layout) { layout_id = layout; } @Override public void onClick(View v) { ...

    Android OnClickListener按钮单击事件监听器用法范例.rar

     btn.setOnClickListener(new OnClickListener(){//添加OnClickListener监听器  @Override  public void onClick(View v) {//重写onClick方法   Button btn = (Button)findViewById(R.id.btn);//获取Button对象 ...

    ListView控件

    viewHold.button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { image.image = R.drawable.img2; image.button_title = "img2"; image.image_tite ...

    andorid dialog 大合集

    button0.setOnClickListener(new OnClickListener() { public void onClick(View v) { CreatDialog(DIALOG_0); } }); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener...

    Android 静音控制 音量控制 减小增大音量.rar

     btnUpper.setOnClickListener(new View.OnClickListener() {//添加监听器   @Override   public void onClick(View v) {//重写onClick方法   am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager....

    Android 演示简单toast和带图片toast的实现方法.rar

     btn1.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {   Toast toast = Toast.makeText(ToastSampleActivity.this, "简单的toast",   Toast.LENGTH_SHORT)...

    android开发使用eclipse小bug

    更改小空间widget的位置(本例中Button),程序调用出错button.setOnClickListener(new OnClickListener())

    UUID随机数字

    button1.setOnClickListener(this); UUID uuid = UUID.randomUUID(); tv.setText(uuid.toString()); } @Override public void onClick(View v) { UUID uuid = UUID.randomUUID(); tv.setText(uuid....

    安卓属性动画

    class AlphaButtonListener implements View.OnClickListener { public void onClick(View v) { //创建一个AnimationSet对象,参数为Boolean型, //true表示使用Animation的interpolator,false则是使用自己...

    动画从屏幕下方弹出dialog

    private Button[] btn = new Button[10]; private EditText etLed; private Button btnSub, btnPlus, btnEqual, btnDot, btnC, mButton_cancel, btnOk; private double predata = 0; private String preopt = ...

Global site tag (gtag.js) - Google Analytics