Fragment總結(二)

Fragment的含義,作用,生命週期,使用方法,Fragment管理請查看上篇文章Fragment總結(一)。這篇文章主要是介紹Activity和Fragment之間通信,Fragment和Fragment之間通信。

Activity和Fragment之間通信

1.Activity和Fragment互相調用各自的方法實現交互:
(1)在Activity中調用Fragment的方法:
通過getActivity()獲取所附屬的Activity,可以調用其相關方法。

DynamicAddActivity activity = (DynamicAddActivity) getActivity();
activity.showToast();

(2)在Fragment中調用Activity的方法:
通過FragmentManager獲取相對應的Fragment,可以調用其相關方法。

if(oneFragment == null){
  oneFragment = new OneFragment();
  transaction.add(R.id.container, oneFragment);
} else {
  transaction.show(oneFragment);
}
oneFragment.showToast(DynamicAddActivity.this);

2.通過回調接口實現通信:
在Fragment中聲明一些回調接口,當Fragment調用onAttach時,將這些回調接口實例化,Fragment可以調用各個activity的成員函數了,Activity必須implements這些接口,實現Activity和Fragment之間通信。
下面是一個非常簡單的例子,以此來進行說明:
Fragment中定義一個接口實例化,點擊按鈕時調用:

@Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.one_fragment, null);
        one_fragment_btn = (Button)view.findViewById(R.id.one_fragment_btn);
        one_fragment_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {//點擊按鈕時調用回調方法
                Boolean flag = listener.callback("test");//調用接口
                if(flag){
                    Toast.makeText(getActivity(), "成功", Toast.LENGTH_LONG).show();
                }
            }
        });
        return view;
    }

    //回調接口
    public interface CallBackListener{
        boolean callback(String text);
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try{
            listener = (CallBackListener) context;//實例化接口
        } catch (ClassCastException e){

        }
    }

Activity中實現接口:

//實現回調接口
 @Override
    public boolean callback(String text) {
        if("test".equals(text)){
            return true;
        }
        return false;
    }

Fragment和Fragment之間通信

Fragment之間不能直接通信,需要通過Activity來實現Fragment之間通信,不再舉例進行說明。

發佈了37 篇原創文章 · 獲贊 23 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章