精华内容
下载资源
问答
  • android接口回调

    2016-03-09 19:18:02
    android接口回调
  • android 接口回调

    2016-05-31 17:53:56
    一个演示android接口回调的demo
  • Android接口回调

    2017-11-09 14:49:46
    常见接口回调的三种方式,可以根据博客一起同步学习。
  • 安卓接口回调

    2017-11-05 17:42:51
    安卓接口回调是十分常见的一种传值的方式。 在这里简单的记录一下自己对接口回调的理解和用法。 第一次应用接口回调是应用在MVP框架模式中的M层获取数据,并且将数据回调给P层,下面贴一下我自己的代码。首先...

    在安卓中接口回调是十分常见的一种传值的方式。
    在这里简单的记录一下自己对接口回调的理解和用法。
    第一次应用接口回调是应用在MVP框架模式中的M层获取数据,并且将数据回调给P层,下面贴一下我自己的代码。

    首先这是我的M层实现类:
    在这里只是讲解一下接口回调所以并没有创建M层接口

    public class MyModel{
        /**
        * 获取数据的方法
        * 并且传递一个接口变量
        */
        public void getMyData(IModelCallBack i){
            /**假设我的耗时操作已经做完了String就是我得到的数据*/
            String data = "data";
            //得到数据之后调用接口的方法并且将数据传递过去
            i.callBack(data);
        }
        /**
        *创建一个接口
        *并且创建回调方法
        *回调方法中的参数就是我们得到的数据
        */
        interface IModelCallBack{
            void callBack(String s);
        }
    }

    然后是P层的实现:

    public class MyPresenter{
    
        IView v;
        IModel m;
    
        public DataP(IView v) {
            this.v = v;
            this.m = new DataModel();
        }
    
        public void Relation(){
            //P层调用M层获取数据的方法 并且传递过去 一个接口类型的变量
            //我们在这里用匿名内部类的方式传递一个接口类型的变量
            m.getMyData(new MyModel.IModelCallBack(){
                @Override
                public void callBack(String s){
                    //在这里我们就得到了 数据 可以进行我们自己的操作了
                }
            });
        }
    }

    以上就是我对接口回调的一点理解了,,,

    如果有什么扩展的需求或者我有什么遗失和错误欢迎评论,我会第一时间回复和更新。

    展开全文
  • 在Android中到处可见接口回调机制,尤其是UI事件处理方面,本文给大家介绍android接口回调机制,涉及到android接口回调相关知识,对本文感兴趣的朋友可以参考下本
  • Android接口回调Demo

    2018-04-09 14:48:18
    简单、易理解、实用的接口回调demo,适合初学者对接口回调学习和使用。
  • Android 接口回调实例

    千次阅读 2015-05-14 14:42:35
    Android接口回调方法处处涉及到,比如常用的Button点击事件就是一个接口回调,可见掌握熟练使用接口回调方法的重要性。 接口回调的简单解释就是:比如我这个类实现了一个接口里的方法doSomething,然后注册到你这里...

    Android接口回调方法处处涉及到,比如常用的Button点击事件就是一个接口回调,可见掌握熟练使用接口回调方法的重要性。

    接口回调的简单解释就是:比如我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了, 你在某个触发的时机回头来调用我doSomething的方法。

    接口回调一般有两种写法,实现形式不一样,但是具体的内部的实现逻辑是一样。


    直接给出代码:

    方法一:

    package com.callbackdemo;
    
    import android.graphics.Bitmap;
    
    /**
     * 接口
     * 
     * @author zhongyao
     */
    public interface ImageStateInterface {
    	void onImageStart();
    
    	void onImageSuccess(Bitmap bitmap);
    
    	void onImageFailed();
    
    	void OnEnd();
    }

    package com.callbackdemo;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.drawable.BitmapDrawable;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
    
    /**
     * Android 接口回调实例 
     * 
     * @author zhongyao
     */
    public class MainActivity extends Activity implements ImageStateInterface {
    	private Button button;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		/**
    		 * 实例化控件
    		 */
    		onLincoln();
    
    	}
    
    	private void onLincoln() {
    		button = (Button) findViewById(R.id.button1);
    		button.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    
    				DownloadImageUtil downloadImageUtil = new DownloadImageUtil();
    				// 调用StartDownLoad方法,目的是将MainActivity注册到接口那里,使接口知道,需要调用的是哪个类中的实现该接口的方法。
    				downloadImageUtil.StartDownLoad(MainActivity.this,
    						getApplicationContext());
    			}
    		});
    
    	}
    
    	@Override
    	public void onImageStart() {
    		Log.d("lincoln", "onImageStart");
    		button.setText("onImageStart");
    
    	}
    
    	@Override
    	public void onImageSuccess(final Bitmap bitmap) {
    		Log.d("lincoln", "onImageSuccess");
    		runOnUiThread(new Runnable() {
    
    			@SuppressLint("NewApi")
    			@Override
    			public void run() {
    				button.setText("onImageSuccess");
    
    				button.setBackground(new BitmapDrawable(bitmap));
    			}
    		});
    	}
    
    	@Override
    	public void onImageFailed() {
    
    	}
    
    	@Override
    	public void OnEnd() {
    		Toast.makeText(MainActivity.this, "哈哈!!", 0).show();
    	}
    }

    package com.callbackdemo;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    /**
     * 在该类中调用MainActivity已实现的接口中的方法。
     * @author zhongyao
     */
    public class DownloadImageUtil {
    	public void StartDownLoad(final ImageStateInterface imageStateInterface,
    			final Context context) {
    		//该imageStateInterface使其得知,是从哪里注册过来的,然后根据其来源调用其实现的接口方法。
    		
    		//如下,此时调用的就是MainActivity.this中实现的onImageStart方法。
    		imageStateInterface.onImageStart();
    
    		new Thread(new Runnable() {
    
    			@Override
    			public void run() {
    				try {
    					new Thread().sleep(5000);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    				Bitmap bitmap = BitmapFactory.decodeResource(
    						context.getResources(), R.drawable.icon);
    				imageStateInterface.onImageSuccess(bitmap);
    			}
    		}).start();
    
    		imageStateInterface.OnEnd();
    
    	}
    
    }
    

    方法二:实现原理一样,只是实现形式不一样而已。

    package com.callbackdemo;
    
    import android.graphics.Bitmap;
    
    /**
     * 接口
     * 
     * @author zhongyao
     */
    public interface ImageStateInterface {
    	void onImageStart();
    
    	void onImageSuccess(Bitmap bitmap);
    
    	void onImageFailed();
    
    	void OnEnd();
    }
    

    package com.callbackdemo;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.drawable.BitmapDrawable;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
    
    /**
     * Android 接口回调实例
     * 
     * @author zhongyao
     */
    public class MainActivity extends Activity{
    	private Button button;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		/**
    		 * 实例化控件
    		 */
    		onLincoln();
    
    	}
    
    	private void onLincoln() {
    		button = (Button) findViewById(R.id.button1);
    		button.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    
    				DownloadImageUtil.StartDownLoad(imageInterface,
    						MainActivity.this);
    			}
    		});
    
    	}
    	
    	ImageStateInterface imageInterface = new ImageStateInterface() {
    
    		@Override
    		public void onImageStart() {
    			Log.d("lincoln", "onImageStart");
    			button.setText("onImageStart");
    		}
    
    		@Override
    		public void onImageSuccess(final Bitmap bitmap) {
    			Log.d("lincoln", "onImageSuccess");
    			runOnUiThread(new Runnable() {
    
    				@SuppressLint("NewApi")
    				@Override
    				public void run() {
    					button.setText("onImageSuccess");
    
    					button.setBackground(new BitmapDrawable(bitmap));
    				}
    			});
    		}
    
    		@Override
    		public void onImageFailed() {
    
    		}
    
    		@Override
    		public void OnEnd() {
    			Toast.makeText(MainActivity.this, "哈哈!!", 0).show();
    		}
    	};
    
    }
    

    package com.callbackdemo;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    /**
     * 在该类中调用MainActivity已实现的接口中的方法。
     * @author zhongyao
     */
    public class DownloadImageUtil {
    	public static void StartDownLoad(final ImageStateInterface imageInterface,final Context context) {
    	imageInterface.onImageStart();
    
    	new Thread(new Runnable() {
    
    		@Override
    		public void run() {
    			try {
    				new Thread().sleep(5000);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    			Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon);
    			imageInterface.onImageSuccess(bitmap);
    		}
    	}).start();
    	
    	imageInterface.OnEnd();
    
    }
    
    }
    

    效果:


    展开全文
  • Android 接口回调 简单Demo

    万次阅读 2016-10-25 16:11:39
    Android 接口回调 简单Demo在Android中,我们经常会需要接口回调来返回咱们所需求的参数,下面我们来写一个简单的Demo。 start step1: 写接口/** * author: {Davide} on 2016/7/22. * email : {david.forever.god@...

    Android 接口回调 简单Demo

    在Android中,我们经常会需要接口回调来返回咱们所需求的参数,下面我们来写一个简单的Demo。

                           start
    

    step1: 写接口

    /**
     * author: {Davide} on 2016/7/22.
     * email : {david.forever.god@gmail.cn}
     * Difficulties vanish when faced boldly.
     */
    public interface CallBackListener {
        void callback(String s);
    }
    

    step2: 写操作类,即能提供需求结果的类

    /**
     * @author Davide  on 2016/7/22  15:29.
     * @email suwei@acooo.cn
     */
    public class A {
    
        /**
         * @author David  created at 2016/10/25 15:44
         * 1: 首先实例化一个接口
         * 2:写一个传参函数,为求方便,用set函数即可
         * 3:在需求的值拿到以后,即可调用回调方法;
         */
        private CallBackListener callBackListener;
    
        public void setCallBackListener(CallBackListener callBackListener) {
            this.callBackListener = callBackListener;
        }
    
        public A() {
            new Thread() {
                @Override
                public void run() {
                    super.run();
                    try {
                        sleep(3000);
                        callBackListener.callback("在运行三秒后有了结果,返回给需求者");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }
    
    }

    step3:需求类实现调用

            public class MainActivity extends AppCompatActivity implements CallBackListener {
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            /**
             * @author David  created at 2016/10/25 15:50
             *  向结果提供类发起回调请求;
             *  调用其接口的set函数
             */
            A a = new A();
            a.setCallBackListener(this);
        }
    
    
        /**
         * @author David  created at 2016/10/25 15:52
         * 当A类有了结果后返回给自己
         */
        @Override
        public void callback(String s) {
            Log.d("David", "callback:" + s);
        }
    }

    Last: 结果:

    com.sw.davide.jiekouhuidiao D/David: callback:在运行三秒后有了结果,返回给需求者
                           end
    

    Remember Me

    @ Name : David

    @ email :david.forever.god@gmail.com

    Learn from yesterday, live for today, hope for tomorrow.

    Thanks for you!!!

    Have a nice day !!!

    展开全文
  • 详解android 接口回调

    千次阅读 2016-06-01 10:53:34
    详解android 接口回调 看图and看代码 给一个详细的接口回调方法调用 顺序 , 有一个直观 的理解。正常情况下 MainFragment 里面的 list 列表的 点击事件 应该在 它里面实现, 但是为了达到一些目的与要求,如重复...

    详解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接口回调机制

    2015-11-14 11:30:40
    Android接口回调机制 在安卓的开发中,回调(callback)是我们经常用到的。 接口回调的意义在于,注册之后并不立马执行,而在某个时机触发执行。 举个例子: A有一个问题不会,他去问B,B暂时解决不出来...
  • 在Android中到处可见接口回调机制,尤其是UI事件处理方面,这里介绍android接口回调机制,涉及到android接口回调相关知识 在使用接口回调的时候发现了一个经常犯的错误,就是回调函数里面的实现有可能是用多线程...
  • 安卓接口回调原理

    2015-03-23 09:25:02
    在使用接口回调的时候发现了一个经常犯的错误,就是回调函数里面的实现有可能是用多线程或者是异步任务去做的,这就会导致我们期望函数回调完毕去返回一个主函数的结果,实际发现是行不通的,因为如果回调是多线程的...
  • android接口回调第二种优化写法详解、另外附赠简单例子
  • android接口回调详解、简单例子+复杂例子
  • 从原因上看接口回调
  • Android接口回调深入理解

    千次阅读 2016-05-13 16:37:30
    Android控件接口回调理解,绝对小白加深彻!
  • android接口回调的两中简单写法

    千次阅读 2017-04-14 16:53:52
    android接口回调的两中简单写法——B509小贴士一、第一种内部重写(较简单,常用异步) (1)创建接口 ,并实现方法 (2)在获取数据类中实现传递接口对象为参数的方法 (3)在主类中调用返回数据方法 并传递...
  • 安卓接口回调的写法

    千次阅读 2017-03-16 10:23:35
    相信大家刚接触安卓的时候对接口回调很陌生,看网上的一些博客也是云里雾里,但是请你往下看,相信很快就能上手了。废话不多说,本博主教你们写接口回调的三部曲:一.接口回调当然要写接口了:定义一个接口: ...
  • Android 接口回调传值和执行方法

    千次阅读 2017-06-06 15:07:35
    介于很多地方会使用到接口回调,有的是事件做出改变后需要通知某些地方刷新数据,有的是需要传递某些改变的值,所以接口回调非常有掌握的价值,在这里直接把代码贴出来,方便使用。 1、接口回调执行方法 在事件...
  • * 作用:设置接口实例,接口需要一个实例来调用方法,而这个实例要从外面传进来 * 谁实现了这个接口,谁就拥有这个实例 */ public void setJieKouShiLi (JieKou jieKouShiLi) { //jieKou---这里面的实例;...
  • Android接口回调,简单demo

    千次阅读 2017-03-27 11:36:04
    最近做项目有好多的地方用到了接口回调,所以抽空找时间写了个特别简单的接口回调,如有问题,求留言批评教育。 举个例子,A有一个问题不会,他去问B,B暂时解决不出来,B说,等我(B)解决了再告诉你(A)此时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,663
精华内容 48,265
关键字:

安卓接口回调