详解android 接口回调
来源:互联网 发布:mac的应用程序 编辑:程序博客网 时间:2024/05/16 14:23
详解android 接口回调
看图and看代码 给一个详细的接口回调方法调用 顺序 , 有一个直观 的理解。
正常情况下 MainFragment 里面的 list 列表的 点击事件 应该在 它里面实现,
但是为了达到一些目的与要求,如重复利用,减少代码量 。需要一个类似list列表的模版,所以哪里需要用到MainFragment 就在哪里实现 list 点击事件 具体实现方法。
本文章中 RecyclerDeleteActivity 这个 类中 用到了MainFragment ,所以就在RecyclerDeleteActivity 中实现具体的点击方法,如何实现呢?就需要MainFragment 提供一个 接口 ,也就是说在 MainFragment 中 提供一个框,或者说一个平台,也就是接口,等到点击list条目的时候,首先走到MainFragment 中的 onListItemClick 里面, 但是 执行的 是 RecyclerDeleteActivity中的 onItemClick 也就是在MainFragment 中这句代码
mListItemClickListener.**onItemClick**(position);
mListItemClickListener 就是 从 RecyclerDeleteActivity中 获取的 实现接口的对象 。
在上面的MainFragment中 该句代码mListItemClickListener.onItemClick(position); 同时是把点击的position 传递给 RecyclerDeleteActivity
完成了 一个 接口回调过程。
先看 结果
1. 点击 按钮 进入 RecyclerDeleteActivity
控制台 log 打印
2 . 点击按钮 执行 item 列表 点击事件
控制台 log 打印
**看代码 log 的 打印位置 以及 执行 顺序。。。接口类 - MainFragment 并 继承了 ListFragment ------------------** public class MainFragment extends ListFragment { private onListItemClickListener mListItemClickListener; //定义一个回调接口,用来将点击事件传回他的宿主Activity去做,Fragment中不做具体的逻辑操作 public interface onListItemClickListener { void **onItemClick**(int position); } public MainFragment() { } @Override public void onAttach(Context context) { super.onAttach(context); //他的宿主Activity将实现onListItemClickListener接口 //使用getActivity()获得的宿主Activity,将他强转成onListItemClickListener接口 Log.e("MainFragment ", " mListItemClickListener 1"); mListItemClickListener = (onListItemClickListener) getActivity(); Log.e("MainFragment ", " mListItemClickListener 2"); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //获得我们在strings.xml中定义个数组 final String[] items = getResources().getStringArray(R.array.main_items); //创建适配器 final ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, items); //设置适配器 setListAdapter(adapter); } @Override public void onListItemClick(ListView l, View v, int position, long id) { Log.e("MainFragment ", " onListItemClick 1"); if (mListItemClickListener != null) { Log.e("MainFragment ", " onListItemClick 2"); //由于宿主Activity实现了onListItemClickListener接口 //因此调用的是宿主Activity的onItemClick方法 //并且将点击的item的position传给Activity mListItemClickListener.**onItemClick**(position); Log.e("MainFragment ", " onListItemClick 3"); } }}**实现接口的类 -**------------public class RecyclerDeleteActivity extends AppCompatActivity implements MainFragment.onListItemClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recycler_delete); //当savedInstanceState为null时才new一个MainFragment出来 //否则每次旋转屏幕都会new出来一个 Log.e("RecyclerDeleteActivity "," new MainFragment() 1"); if (savedInstanceState == null) { MainFragment fragment = new MainFragment(); //用add将MainFragment添加到framelayout上 Log.e("RecyclerDeleteActivity "," new MainFragment() 2"); getSupportFragmentManager().beginTransaction() .add(R.id.content, fragment) .commit(); } } @Override public void **onItemClick**(int position) { Log.e("RecyclerDeleteActivity "," onListItemClick 1"); //当MainFragment的Item被点击后,就会回调此方法 //在此方法中写真正的逻辑,这样Activity和Fragment //之间就是松耦合关系,MainFragment可以复用 Fragment fragment = null; switch (position) { case 0: //当点击第一个item时候,new一个RecyclerListFragment Log.e("RecyclerDeleteActivity "," onListItemClick 2"); fragment = new RecyclerListFragment(); Log.e("RecyclerDeleteActivity "," onListItemClick 3"); break; case 1: //当点击第二个item时候,new一个RecyclerGridFragment fragment = new RecyclerGridFragment(); break; } //这次用replace,替换framelayout的布局,也就是MainFragment getSupportFragmentManager().beginTransaction() .replace(R.id.content, fragment) .addToBackStack(null) .commit(); }}
- 详解android 接口回调
- Android 接口回调机制详解
- Android 接口回调机制详解
- Android 接口回调机制详解
- 接口回调详解
- Android 回调接口是啥,回调机制详解
- Android 何为回调接口,回调机制详解
- Android 回调接口是啥,回调机制详解
- android接口回调详解、简单例子+复杂例子
- Android中的AsyncTask和接口回调使用详解
- Android笔记:详解接口回调(interface/abstract)的用法
- android 接口 接口回调
- Android Serializable接口 详解
- Java 接口回调详解
- 接口回调机制详解
- JAVA接口回调详解
- JAVA接口回调详解
- android 接口回调
- The underlying connection was closed错误
- layer-list简单使用教程
- 我的第一个安卓工程:云计算环境下基于安卓的任务执行系统 (3)完成界面
- Android NDK开发之Hello-JNI!
- 应用之星:H5制作又出一利器,分分钟刷爆朋友圈
- 详解android 接口回调
- K-近邻法(K-NN)
- Android导致内存泄漏的几种情形
- JS正则方法判断邮箱号码,手机号码,电话号码
- 关于JS的初具实用意义的小型框架结构的思路
- Android-Arcgis开发须知
- cache-control的使用
- SQLite 可视化工具下载地址
- 解决 按钮响应延时[UIScrollView 和 UITableViewCell 中的子视图触摸事件延时]