美文网首页
Fragment和Activity之间的通信(含接口回调)

Fragment和Activity之间的通信(含接口回调)

作者: 温一 | 来源:发表于2019-03-20 16:09 被阅读0次

    一、Fragment和Activity的交互

    1、在Fragment中调用Activity中的方法

    Fragment可以通过getActivity()方法或者Context来获得Activity的实例,然后调用activity的方法

    2、在Activity中调用Fragment中的方法:(要用到接口回调)

    activity也可以获得一个fragment的引用,从而调用fragment中的方法。获得fragment的引用要用FragmentManager,之后可以调用findFragmentById() 或者 findFragmentByTag()。例如:

    SubFragment fragment = (SubFragment ) getFragmentManager().findFragmentById(R.id.sub_fragment);
    

    3、Fragment与Fragment之间的通信:

    首先在一个Fragment中可以得到与它相关联的Activity,然后再通过这个Activity去获取另外一个Fragment的实例,这样就实现了不同Fragment之间的通信。

    二、Fragment和Activity之间的通信,通过接口回调在Activity中获取Fragment中的值

    一些情况下,可能需要fragment和activity共享事件,一个比较好的做法是在fragment里面定义一个回调接口,然后要求宿主activity实现这个接口。当activity通过这个接口接收到一个回调,它可以让同布局中的其他fragment分享这个信息。

    A.java代码如下:

    package com.cn.callback;
    
    public class A {
    
        public A() {
        }
        //下载图片的操作
        public void loadfile(String image_path,final CallBack callBack) {
    
            new Thread(new Runnable(){
    
                public void run() {
    
                    // TODO Auto-generated method stub
    
                    String msg = "Hello, Im file";
    
                    callBack.getResult(msg);               
    
                }
            }).start();
        }
        public interface CallBack {
            public void getResult(String result);
    
        }
    }
    

    新建B.java,代码如下:

    package com.cn.callback;
    
    import com.cn.callback.A.CallBack;
    
    public class B {
        public B(){
            
        }
        
        public static void main(String args[]) {
            A a = new A();
            a.loadfile("http://www.baidu.com/a.gif", new CallBack() {
                public void getResult(String result) {
                    // TODO Auto-generated method stub
                    System.out.println(result);
                }
                
            });
        }
    }
    

    最后程序运行的结果如下:Hello, Im file

    相关文章

      网友评论

          本文标题:Fragment和Activity之间的通信(含接口回调)

          本文链接:https://www.haomeiwen.com/subject/kzctvqtx.html