安卓学习笔记---Fragment

2017-11-25  本文已影响0人  天青色等烟雨hhft

Fragment作用:同时适配手机和平板、UI和逻辑的共享。
生命周期:必须依存于Activity
onAttach()→onCreate()→onCreateView()→onActivityCreate()→onStart()→onResume()→onPause()→onStop()→onDestroyView()→onDestroy()→onDetach()

Fragment比Activity多了几个额外的生命周期:

加载fragment的流程:

1.获得FragmentManager对象,通过getFragmentManager();
2.获得FragmentTransaction对象,通过fm.beginTransaction();
3.调用add()方法或者replace()方法加载Fragment;
4.最后调用commit()方法提交事务

Fragment与Activity的交互

组件获取

Fragment获取Activity中的组件:
getActivity.findVIewById(R.id,xxx);
Activity获得Fragment中的组件(根据id或者Tag):getFragmentManager.findFragmentById(R.id.xxx)

数据传递

Activity传递数据给Fragment:
在Activity中创建Bundle数据包,调用Fragment实例的setArguments(bundle) 从而将Bundle数据包传给Fragment

Bundle bundle=new Bundle();
bundle.putString("str",str);
fragment.setArguments(bundle);

然后Fragment中调用getArguments获得 Bundle对象,

TextView tv= (TextView) view.findViewById(R.id.tv);
Bundle bundle=getArguments();
tv.setText(bundle.getString("str"));

Fragment传值给Activity
在fragment中定义回调接口

   /**
     * 接口
     * */
    public interface CallBack{
        /**
         定义一个获取信息的方法
         * */
        public void getResult(String result);
    }
    /**
     * 接口回调
     * */
    public void getData(CallBack callBack){
        callBack.getResult("我是fragment的值");
    }

在Activity中实现回调

fragment.getData(new TestFragment.CallBack() {
            @Override
            public void getResult(String result) {
                Toast.makeText(MainActivity.this,result,Toast.LENGTH_LONG).show();
            }
        });

通过今天对fragment的学习,理解了它们之间是怎样传递数据的,之前也用过,但是并没有真正理解,只知道这样写就对了,等下次用的时候还要看看之前怎样写的,然后copy过来,今天跟着教程一步一步写,记忆更加深刻了。
意外的是收获是知道了回调是怎么一回事,之前老听别人说回调回调的,但是自己没有写过,只是用过,也看过项目中的,但是似懂非懂,今天自己写了一遍,有了一个大概了解。
最后感谢遇到这么负责任的领导。

上一篇下一篇

猜你喜欢

热点阅读