美文网首页Android开发
Activity、Fragment相互调用

Activity、Fragment相互调用

作者: 光锥外 | 来源:发表于2018-08-07 16:38 被阅读0次

    一、Activity控制Fragment或者修改Fragment的控件的值
    在Fragment中定义一个public方法,然后调用该方法既可以,注意:不要忘了判断一下Fragment的控件是不是为空。

    public void activityChangeFragment(String data) {
    
     }
    
        然后在Activity调用
    
     commodityInformFragment.activityChangeFragment("data");//commodityInformFragment:对应的Fragment
    

    二、Fragment中使用父Activity的属性和方法
    1.强制类型转换(最简单)
    在Activity中创建一个public方法:

    public void goShopping(int i){
            commodityPager.setCurrentItem(i);
        }
    

    在需要给acitivity执行下列代码:

    if(getActivity() != null){
                ((CommodityActivity) getActivity()).goShopping(2);//CommodityActivity是绑定fragment的activity
            }
    

    2.官方推荐写法,接口回调(推荐,解耦最好)
    Fragment中的写法:

    private OnFragmentInteractionListener mListener;
        
        @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            if (context instanceof OnFragmentInteractionListener) {
                mListener = (OnFragmentInteractionListener) context;
            }
            else {
                throw new RuntimeException(context.toString()
                        + " must implement OnFragmentInteractionListener");
            }
        }
     
        @Override
        public void onDetach() {
            super.onDetach();
            mListener = null;
        }
     
        public interface OnFragmentInteractionListener {
            // TODO: Update argument type and name
            void onFragmentInteraction(String data);
        }
    

    然后在Activity实现上面的接口即可
    3.使用三方库,Eventbus实现,具体怎么实现百度Eventbus用法
    4.广播
    5.使用观察者模式
    6.将Activity中的对应控件命名成静态(最不推荐)

    相关文章

      网友评论

        本文标题:Activity、Fragment相互调用

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