読者です 読者をやめる 読者になる 読者になる

kojiko-android’s blog

開発中にハマった時の解決策や、忘れがちなことを残しておきます。

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

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

インターフェイスとしてリスナーを定義します
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() {

    }

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