• Fragment与Fragment、Activity通信的四种方式I

    发布:51Code 时间: 2017-09-20 10:15

  • 一直想总结一下Fragment与Fragment、Activity通信的问题,今天有时间一共总结了三种,权当抛砖引玉,如果大家还有更好的方式来实现Fragment和Fragment、Activity的通信,欢迎提出来,我们一起...

  • 一直想总结一下Fragment与Fragment、Activity通信的问题,今天有时间一共总结了三种,权当抛砖引玉,如果大家还有更好的方式来实现Fragment和Fragment、Activity的通信,欢迎提出来,我们一起学习。 

           我们就来看看怎样实现两个Fragment之间的通信。

           1.直接在一个Fragment中调用另外一个Fragment中的方法

           我们可以直接在一个Fragment中调用另外一个Fragment的公开方法,前提是要先拿到另外一个Fragment的实例,我们先来看看怎样在左边的Fragment中拿到右边Fragment的实例:

    ContentFragment cf = (ContentFragment) getActivity()  
                                .getFragmentManager().findFragmentById(  
                                        R.id.content_fg);  
                        cf.showPro(name);  

           我们通过宿主Activity拿到FragmentManager,进而再拿到右边的Fragment,然后调用右边Fragment里边的showPro方法,其中要传入的参数是左边点击的人名,我们看看右边Fragment中的showPro方法:

    public void showPro(String key) {  
        list = map.get(key);  
        adapter = new ArrayAdapter<String>(getActivity(),  
                android.R.layout.simple_list_item_1, list);  
        lv.setAdapter(adapter);  
    }  

           先根据传进来的人名拿到该人作品的数据集,然后构造一个adapter赋值给listview,很简单吧。使用这种方式我们可以直接在一个Fragment中调用另一个Fragment的公开方法,从而实现两个Fragment的通信。

           这种方法适于那些我们在布局文件中就已经定义了的Fragment,这种Fragment每个都有id,可以通过FragmentManager找到,但是如果我们使用了ViewPager,即每个Fragment都是动态添加进来的,这个时候我们无法通过FragmentManager获得另外一个Fragment的实例,那么该怎么办呢?这时我们就要用到下面这种方式了。

  • 上一篇:Android 本地语言开发包

    下一篇:Fragment与Fragment、Activity通信的四种方式II

网站导航
Copyright(C)51Code软件开发网 2003-2015 , 沪ICP备05003035号