Androidにおけるfragmentとactivity間の相互通信

2020 ワード

fragmentを使用すると、fragmentとactivityの間の通信という問題に直面します.次にactivityとfragmentの間でインタフェースを実現して通信する方法を記録する.
private OnMainListener mainListener;

//     

@Override

public void onAttachFragment(Fragmentfragment) {

try {

mainListener = (OnMainListener)fragment;

} catch (Exception e) {

throw new ClassCastException(this.toString() + " must implementOnMainListener");

}

super.onAttachFragment(fragment);

}

//   

public interface OnMainListener {

public void onMainAction();

}

onMainActionメソッドはactivityが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);

}

 
public class MainActivity extends Activity implements OnFragmentListener{

………………

//       

@Override

public void onFragmentAction(int flag) {

//       

}

どちらもインタフェースの実装によって通信を行うが,重要な点はonAttachFragmentとonAttachメソッドのそれぞれにインタフェースバインドを行うことである.
通信には、ブロードキャスト、静的handlerなど、他の方法がありますが、ここでは後述しません.
end~