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(); } }
相关文章推荐
- Android四大组件Service的基本知识:
- Android四大组件service之Bound Service
- Android线程优先级
- Android应用性能优化之使用SparseArray替代HashMap
- Android notifyDataSetChanged无法正常刷新
- Android中的@+id 和 @id的区别
- Android_ViewPager
- Android中ListView的item不能响应点击事件的原因
- Android AdapterView View的复用机制 分析
- Android 三大图片加载框架比较
- Android图片加载框架Glide使用总结
- Compile a native C Android application
- Android的IPC机制(六)—— BroadcastReceiver的使用
- 详解Android应用开发中Scroller类的屏幕滑动功能运用
- 如何保证Android Service在后台不被Kill,或者被Kill后重启
- Android 中 Environment.getExternalStorageDirectory()无效
- 动画效果Animation-android
- Android 第二天重置版
- 解决Android EditText多行输入,内容或边框显示的问题
- AnimationDrawable资源的使用