Android 回调实例

来源:互联网 发布:java程序设计pdf百度云 编辑:程序博客网 时间:2024/05/01 21:18
<span style="font-family: Arial, Helvetica, sans-serif;">import cc.cn.ThreadSubclass.YourListener;</span>
import android.app.Activity;import android.os.Bundle;/** * Demo描述: * Android中回调接口使用实例 */public class MainActivity extends Activity {    private ThreadSubclass mThreadSubclass;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        init();    }         private void init(){        mThreadSubclass=new ThreadSubclass();        mThreadSubclass.setYourListener(new YourListener() {            @Override            public void onSomeChange(String info,int i) {                System.out.println("------> info="+info);                System.out.println("------> i="+i);            }        });        mThreadSubclass.start();    }     }</span>

ThreadSubclass如下:

<span style="font-family:KaiTi_GB2312;font-size:18px;">package cc.cn; public class ThreadSubclass extends Thread {    private YourListener mYourListener=null;     @Override    public void run() {        super.run();        for (int i = 0; i < 5; i++) {            System.out.println("Now is "+i);        }        if (mYourListener!=null) {            mYourListener.onSomeChange("输入已经完毕",9527);        }    }     //回调接口(监听器)    public interface YourListener {        public void onSomeChange(String info,int i);    }         //设置回调接口(监听器)的方法    public void setYourListener(YourListener yourListener) {        mYourListener = yourListener;    }       }</span>

接口回调的条件就是一个接口,两个类,两个类之间互相操作。无论是哪两个类,如Service和Activity,Fragment和Fragment,Fragment和Activity等等。

下面再讲一个例子说明,Fragment是项目中常用的组件,但是他们之间交互你是怎么实现的呢?不得其领的人应该做起来是比较困难的,像以前的我。如FragmentA想要改变FragmentB的UI,你首先可能会想到在FragmentB中写一个方法如changeFragmentUI()来改变FragmentB的UI,1、你首先想到的是new FragmentB().changeFragmentUI(),但是你试过后发现是不行的报:NullPointerException。这是因为你有重新new了一个FragmentB,而需要改变的组件初始化是在原来的FragmentB。2、把changeFragmentUI设为static,那就可以FragmentB.chaneFragmentUI()。这样虽然不会报空指针异常,但是static方法里面的变量也就必须全部是static,也就是你要改变UI的组件都要声明是static,想想,如果有太多的static那样肯定是不好的。这时如果会用接口回调那么就能解决你所有的烦恼啦,下面举例实现两个Fragment之间交互来改变彼此UI的例子。当然你也可以用官方提供的Fragment之间通信的方法。

0 0
原创粉丝点击