美文网首页
安卓学习笔记---Fragment

安卓学习笔记---Fragment

作者: 天青色等烟雨hhft | 来源:发表于2017-11-25 18:28 被阅读0次

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

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

    • onAttach(Activity):当Activity和Activity发生关关联时调用
    • onCreateView(LayoutInflater, ViewGroup, Bundle):创建该Fragment的视图
    • onActivityCreate(Bundle):当Activity的onCreate方法返回时调用
    • onDestoryView():当Fragment的视图被移除时调用
    • 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过来,今天跟着教程一步一步写,记忆更加深刻了。
    意外的是收获是知道了回调是怎么一回事,之前老听别人说回调回调的,但是自己没有写过,只是用过,也看过项目中的,但是似懂非懂,今天自己写了一遍,有了一个大概了解。
    最后感谢遇到这么负责任的领导。

    相关文章

      网友评论

          本文标题:安卓学习笔记---Fragment

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