- Androidプログラミング質問スレ revision47 [転載禁止]©2ch.net
585 :デフォルトの名無しさん[sage]:2015/02/26(木) 14:07:17.53 ID:CmsfWZXg - FragmentからActivityに何かしらの通知を返したいけど、startActivityForResult()以外でいい方法ってありますか?
リスナー登録してもらうのもイマイチなのでフレームワークで提供されてる機構で考えてます
|
- Androidプログラミング質問スレ revision47 [転載禁止]©2ch.net
591 :デフォルトの名無しさん[]:2015/02/26(木) 16:09:20.93 ID:CmsfWZXg - 585です、説明が足りずすいませんでした
補足すると、Activity内のロジックが多くなったのでロジック毎にUI無しのFragmentに処理を書くように変更してます 処理の流れとしては 1. ActivityからXXXFragmentに処理依頼 Activity#getFragmentManager().beginTransaction().add(XXXFragment).commit() 2. XXXFragmentで処理開始 XXXFragment#onStart() { ここで処理開始 } 3. XXXFragmentの処理が完了したのでActivityに完了通知 XXXFragment#startActivityForResult(getActivity().getIntent(), XXX); 4. XXXFragmentの完了処理 Activity#onActivityResult() { XXXFragmentから処理結果取得 getSupportFragmentManager().beginTransaction().remove(XXXFragment).commit(); } 3の処理が適しているのかが困っているところで、>>587にあるように XXXFragment#getActivity().notifyResult() のようにAPIをActivity側に用意するのが一番簡単ですが、 そうするとFragmentが使う側のActivityにAPIを用意してもらう制約が生まれるので、 再利用性の低い実装になると懸念しています。 Frameworkの機構を利用してうまくやる方法を教えていただければと思います。
|
- Androidプログラミング質問スレ revision47 [転載禁止]©2ch.net
594 :デフォルトの名無しさん[]:2015/02/26(木) 16:38:40.77 ID:CmsfWZXg - >>592 - 593
ありがとうございます デベロッパーガイドは見ていたのですが、Fragment#onAttach()でリスナーを登録する前提なので Activity自身にCallBackを実装しないといけないのがどうも。。。 ただ、これが標準的なやり方なのは理解しているので今回はこの方法でやろうかなと思います。 ありがとうございました
|