談談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所需要的數據傳遞過去。

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