SlideShare a Scribd company logo
1 of 9
Android 
FragmentからActivityに通知するためには 
2014.10.23(Thu) 
shgmn
FragmentからActivityにコールバックするためには 
FragmentからActivityにコールバックしたい 
よくある 
リスナインタフェースをActivityに実装すればよい 
FragmentにActivityのインスタンスを渡す方法を考える。。 
2
FragmentからActivityにコールバックするためには 
ダメ案: Fragmentのコンストラクタで渡す 
public class HogeActivity extends Activity implements FugaListener { 
private Fragment createFragment() { 
FugaFragment fuga = new FugaFragment(this); 
return fuga; 
} 
} 
public class FugaFragment extends Fragment { 
private FugaListener listener; 
public FugaFragment(FugaListener listener) { 
this.listener = listener; 
} 
} 
3
FragmentからActivityにコールバックするためには 
ダメ案: Fragmentのコンストラクタで渡す 
Fragmentがライフサイクルの中で再生成される場合は 
引数付きのコンストラクタは使用されない 
(引数無しのデフォルトコンストラクタが呼ばれる) 
先ほどのlistener変数はnullになってしまう 
4
FragmentからActivityにコールバックするためには 
ダメ案: Fragmentのsetterで渡す 
public class HogeActivity extends Activity implements FugaListener { 
private Fragment createFragment() { 
FugaFragment fuga = new FugaFragment(); 
fuga.setListener(this); 
return fuga; 
} 
} 
public class FugaFragment extends Fragment { 
private FugaListener listener; 
public void setListener(FugaListener listener) { 
this.listener = listener; 
} 
} 
5
FragmentからActivityにコールバックするためには 
ダメ案: Fragmentのsetterで渡す 
FragmentのライフサイクルはActivityのそれとは独立してい 
る 
Fragment再生成のタイミングで 
ActivityからFragmentのsetterを呼ぶことは非常に難しい 
(ActivityでFragmentの状態をすべて監視する?無理。) 
先ほどのlistener変数はnullになってしまう 
6
FragmentからActivityにコールバックするためには 
おすすめ案: FragmentのonAttach()で渡す 
public class HogeActivity extends Activity implements FugaCallback { 
private Fragment createFragment() { 
FugaFragment fuga = new FugaFragment(); 
return fuga; 
} 
} 
public class FugaFragment extends Fragment { 
private FugaListener listener; 
@Override 
public void onAttach(Activity activity) { 
super.onAttach(activity); 
if (activity isinstanceof FugaListener) { 
this.listener = (FugaListener) activity; 
} 
} 
} 
7
FragmentからActivityにコールバックするためには 
おすすめ案: FragmentのonAttach()で渡す 
FragmentがActivityにAttachしたタイミングで呼ばれる 
引数にはActivityインスタンスが入っている 
これでlistenerがnullになることはない 
8
That’s all. 
Thank you for seeing till the end.

More Related Content

Viewers also liked (9)

Aci lasvi (kelas xii ipa 1)
Aci lasvi (kelas xii ipa 1)Aci lasvi (kelas xii ipa 1)
Aci lasvi (kelas xii ipa 1)
 
Prevención Tuberculosis
Prevención TuberculosisPrevención Tuberculosis
Prevención Tuberculosis
 
Teniasis
TeniasisTeniasis
Teniasis
 
Pencegahan dan pengendalian infeksi 1
Pencegahan dan pengendalian infeksi 1Pencegahan dan pengendalian infeksi 1
Pencegahan dan pengendalian infeksi 1
 
無線技術と暗号化
無線技術と暗号化無線技術と暗号化
無線技術と暗号化
 
Enterobiasis
EnterobiasisEnterobiasis
Enterobiasis
 
Uncinariasis
UncinariasisUncinariasis
Uncinariasis
 
Vigo mi primera exportacion ejemplo de feria internacional
Vigo mi primera exportacion ejemplo de feria internacionalVigo mi primera exportacion ejemplo de feria internacional
Vigo mi primera exportacion ejemplo de feria internacional
 
Ah Naturale Clean Post 1
Ah Naturale Clean Post 1Ah Naturale Clean Post 1
Ah Naturale Clean Post 1
 

Recently uploaded

Recently uploaded (9)

MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 

FragmentからActivityに通知するためには