寒川アクアブログ

美容師しながらアプリ開発していて水草が趣味の私のブログです

フラグメントで起きたイベントをアクティビティに知らせる(コールバック)

フラグメントで起きたイベントをアクティビティに知らせる方法です。

インターフェイスとしてリスナーを定義します
public interface MyListener {
    void onDo();
}

 空のメソッド(ここでは引数無しのonDo()としています)を定義します。

フラグメント側で、インターフェイスの参照を取得し、保持します。
  final MyListener listener = (MyListener)getActivity();
  listener.onDo();

 フラグメントからアクティビティの参照を得るには、getActivity()を呼び出します。
それをインターフェイス型にキャストし、参照を保持します。
参照からメソッドを呼び出すことで、インターフェイスを実装したクラスにコールバックが送られます。

アクティビティ側で、implementsします
public class MainActivity extends ActionBarActivity implements MyListener{
アクティビティ内に、インプリメントメソッドをオーバーライドします
  @Override
    public void onDo() {

    }

 これで、フラグメントからアクティビティへの通信が可能になります。