您的位置:首页 > 移动开发 > Android开发

Android接口回调

2016-02-29 18:09 423 查看

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: