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