Android实现任意fragment之间数据刷新

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36347817/article/details/81702863

使用注册广播器的方式,在任意fragment之间刷新数据。

1.在要刷新的fragment中,实现以下方法:

 //注册广播接收器
    private void registerReceiver() {
        broadcastManager = LocalBroadcastManager.getInstance(getActivity());
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("zachary");
        broadcastManager.registerReceiver(mRefreshReceiver, intentFilter);
    }

    private BroadcastReceiver mRefreshReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String refresh= intent.getStringExtra("refreshInfo");
            if ("yes".equals(refresh)) {
                // 在主线程中刷新UI,用Handler来实现
                new Handler().post(new Runnable() {
                    public void run() {
                        //在这里来写你需要刷新的地方
                    }
                });
            }
        }
    };

2.在onCreate()中广播注册,在onDetach()中取消注册:

LocalBroadcastManager broadcastManager;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = super.onCreateView(inflater, container, savedInstanceState);
        ButterKnife.bind(this, rootView);

        //刷新Fragment数据的方法
        registerReceiver();

        return rootView;
    }

    //注销广播
    @Override
    public void onDetach() {
        super.onDetach();
        broadcastManager.unregisterReceiver(mRefreshReceiver);
    }

3.在其他fragment中发送广播来实现刷新另一个或者多个fragment:

//在需要的事件中执行如下代码,发送刷新数据的广播
Intent intent = new Intent("zachary");
intent.putExtra("refreshInfo", "yes");
LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);

4.功能很强大,可以在子fragment中刷新父fragment,反之亦然。

猜你喜欢

转载自blog.csdn.net/qq_36347817/article/details/81702863