Androidにおけるfragmentとactivity間の相互通信
2020 ワード
fragmentを使用すると、fragmentとactivityの間の通信という問題に直面します.次にactivityとfragmentの間でインタフェースを実現して通信する方法を記録する.
onMainActionメソッドはactivityがfragmentに通信するメソッドで,パラメータを入れて通信する場所で直接呼び出せばよい.
----------------------------------------------------------------------------
2.fragmentはactivityに通信する:(前と差が少ないので、それを変えて使えばいい)
どちらもインタフェースの実装によって通信を行うが,重要な点はonAttachFragmentとonAttachメソッドのそれぞれにインタフェースバインドを行うことである.
通信には、ブロードキャスト、静的handlerなど、他の方法がありますが、ここでは後述しません.
end~
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~