Android接口回调

Android接口的基本使用 · 接口回调

在开发时,点击监听(onClick)是最基本的、也是最常用的接口回调。

在onClick的使用中,接口回调的使用流程:

  • 新建一个接口
/** 
 * Interface definition for a callback to be invoked when a view is clicked. 
 */  
public interface OnClickListener {  
    /** 
     * Called when a view has been clicked. 
     * 
     * @param v The view that was clicked. 
     */  
    void onClick(View v);  
}
  • 在View中使用接口
public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {  
    /** 
     * Listener used to dispatch click events. 
     * This field should be made private, so it is hidden from the SDK. 
     * {@hide} 
     */  
    protected OnClickListener mOnClickListener;  

    /** 
     * Register a callback to be invoked when this view is clicked. If this view is not 
     * clickable, it becomes clickable. 
     * 
     * @param l The callback that will run 
     * 
     * @see #setClickable(boolean) 
     */  

    public void setOnClickListener(OnClickListener l) {  
        if (!isClickable()) {  
            setClickable(true);  
        }  
        mOnClickListener = l;  
    }  


    /** 
     * Call this view's OnClickListener, if it is defined. 
     * 
     * @return True there was an assigned OnClickListener that was called, false 
     *         otherwise is returned. 
     */  
    public boolean performClick() {  
        sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);  

        if (mOnClickListener != null) {  
            playSoundEffect(SoundEffectConstants.CLICK);  
            mOnClickListener.onClick(this);  
            return true;  
        }  

        return false;  
    }  
}  
  • 在Activity给View设置点击监听,并实现接口
public class MainActivity extends Activity implements OnClickListener{  

    private Button button;  

    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        button = (Button)findViewById(R.id.button1);   
        button.setOnClickListener(this);  
    }   
    @Override  
    public void onClick(View v) {  
        Toast.makeText(getApplication(), "OnClick", Toast.LENGTH_LONG).show();  
    }  

}  

Activity中的方法onClick(View v) 就是所谓的接口回调函数。

实际的例子:老板吩咐秘书去做一件事情,秘书开始工作(秘书工作的同时,老板可能再做其他事情),等秘书做完工作,向老板报告,完成。

这个例子中间有三个部分:① 老板;②秘书;③老板和秘书沟通的渠道(接口)

老板和秘书的沟通,都是通过接口来实现的。

老板布置任务:在Activity类中设置view的点击监听,当view点击时,通知view做操作;

秘书汇报任务:通过work接口获取工作情况;

  • 接口
package com.example.callback;

public interface OnWorkListener {

    public void callBack();
}
  • 老板类
public class President extends Activity implements OnClickListener, OnWorkListener {

    private Button mButton;

    private TextView txt;

    private Secretary secretary;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init() {
        secretary = new Secretary();
        mButton = (Button) findViewById(R.id.button);
        txt = (TextView) findViewById(R.id.textView);
        mButton.setOnClickListener(this);
        secretary.setListener(this);//给secretary设置监听
    }

    @Override
    public void onClick(View v) {
        secretary.working();
    }

    @Override
    public void callBack() {
        mButton.setText("任务完成");
        txt.setText("秘书完成工作!!!!");
    }

}
  • 秘书类
public class Secretary {

    President president;

    OnWorkListener listener ;

    public void setListener(OnWorkListener listener) {
        this.listener = listener;
    }

    public void working(){
        listener.callBack();
    }

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值