美文网首页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