標籤:android style class code java ext
在用到fragment的時候,老是會遇到一個問題,就是fragment與activity之間的通訊。下面就來記錄一下activity和fragment之間 通過實現介面來互相通訊的方法。
1. activity 向fragment發出通訊,就這麼寫:
private OnMainListener mainListener;
// 綁定介面
@Override
public void onAttachFragment(Fragmentfragment) {
try {
mainListener = (OnMainListener)fragment;
} catch (Exception e) {
throw newClassCastException(this.toString() + " must implementOnMainListener");
}
super.onAttachFragment(fragment);
}
// 介面
public interface OnMainListener {
public void onMainAction();
}
onMainAction方法是activity向fragment發出通訊的方法,裡面可以放參數, 在要發出通訊的地方直接調用該方法即可。
在對應的fragment裡面要這麼寫:
public class MyFragment extends Fragment implementsOnMainListener {
……………………
@Override
public voidonMainAction() {
//這裡是實現通訊的介面
}
2. fragment向activity 發出通訊:(和前面差不多)
private OnFragmentListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentListener) activity;
} catch (ClassCastException e) {
throw newClassCastException(activity.toString() + " must implement OnFragmentListener");
}
}
public interface OnFragmentListener {
public void onFragmentAction(intflag);
}
在activity中 實現介面:
publicclass MainActivityextendsActivityimplementsOnFragmentListener{
………………
// 實現介面方法
@Override
public voidonFragmentAction(int flag) {
//實現通訊的介面
}
兩者都是通過介面的實現來進行通訊的,重要的地方就是分別在onAttachFragment和 onAttach方法中進行介面綁定。
通訊還有其他方法的,比如廣播、靜態handler等,這裡就不贅述了。
end~