谈谈Android中的回调

我这里主要是采用Fragment和Fragment或是Activity之间的通信来举例子如何使用回调。当然,还有其他多种方式,如EventBus等。

举例一:

Activity需要在Fragment数据加载成功之后,显示某个控件。
步骤:
1.单独定义一个接口:

public interface CallBack {

   void updateView(boolean isSuccess);

}

2 .在Activity中 implements CallBack 。重写updateView:

 @Override
    public void updateView(boolean isSuccess) {
       //根据isSuccess,activity做相应逻辑
    }

3.在Fragment中拿到Activity的引用,在获取数据成功之后,调用Activity的updateView方法

                mCallBack = (CallBack) getActivity();

                if (entity.isSuccess()) {
                    mCallBack.updateView(true);
                }else{
                    mCallBack.updateView(false);
                }

举例二:

如果一个例子不够,那就再来一个吧。
一个Activity中有Fragment A 和Fragment B, 如何将A中的数据传递给B呢?方法有多种,我们再次用回调来做。

  1. 在A中定义一个Listener:
public interface OnGetDataCompletedListener {

        void onGetDataCompleted(Entry entry);
    }


    public void setOnGetDataCompletedListener(OnGetDataCompletedListener mListener) {
        this.mListener = mListener;
    }

2.在需要将数据传递出去的业务逻辑处调用

                    if(mListener!=null){
                            mListener.onGetDataCompleted(entity);
                        }

3.Activity中能够拿到Fragment A的引用

 A.setOnGetDataCompletedListener(new A.OnGetDataCompletedListener() {
            @Override
            public void onGetDataCompleted(Entry entry) {
                B.setViewData(entry);
            }
        });

4.B中提供setViewData()方法,更新自己的逻辑:

 public void setViewData(Entry entry) {
      // todo
    }

这个过程就是:A将数据传递给Activity, Activity再调用B中的方法,将B所需要的数据传递过去。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章