これは、アクティビティからネストされたフラグメントへの結果を取得する有名な問題で、アクティビティは直接アクティビティにアタッチされているネストされていないフラグメント1。そのため、ネストされたフラグメントのonActivityResultが何に関係なく呼び出されることはありませんでした。 私の場合、フラグメントの束を持つviewPagerを持つ1つのフラグメントを含むアクティビティが1つあります。 viewPagerのこのフラグメントの1つで、カメラインテントを開始しようとしましたが、このインテントによって返された結果は最後のフラグメントに送られませんでしたが、私は見つけたseverals答えを試みましたが、イベントバスオブジェクトを作成して、activityからresultCodeをすべてのフラグメントに拡散しますが、このケースでは機能しません。onActivityResultを作成する方法ビューページからネストされたフラグメントに対して呼び出される
1
A
答えて
0
私は非常に似たような状況にあったので、私はあなたのための解決策があるかもしれません。
短く言えば、は、Fragment
にを依存しなくなり、自分自身で動作ロジックを実装しました。
あなたが信用すべきonActivityResult()
はActivity
の1つだけです。
あなたはこの1
public interface ActivityResultDispatcher {
// Pass anything you want, Bundle, Intent, ecc...
// For the sake of simplicity I'm using Bundle...
public void dispatchResultData(final Bundle data);
}
ようinterface
を作成し、Fragment
クラスがそれを実装する必要があります。
あなたActivity
とあなたの主Fragment
あなたは(あなたのActivity
に)このような何かを行うことができますことを非常に簡単であるべきとの通信:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
final Bundle bundle = new Bundle();
// put data inside Bundle
this.primaryFrament.dispatchResultData(bundle);
}
、プライマリFragment
が成り立つものです他のFrament
クラスを持つViewPager
。あなたが行いますプライマリFragment
でそう
:
@Override public void dispatchResultData(final Bundle data) {
for (int i = 0; i < MyViewPager.NUM_FRAGMENTS; i++) {
final ActivityResultDispatcher subFragment = (ActivityResultDispatcher) this.retrieveFragment(i);
// some fragments in ViewPager may be dynamically deleted
if (subFragment != null) {
subFragment.dispatchResultData(data);
}
}
}
機能retrieveFragment(final int position)
は、私は、ウェブ上で見つけたコードの非常に居心地の良い作品です。
このようなViewPager
作品のための実装:
public Fragment retrieveFragment(final int position) {
return this.fragmentManager.findFragmentByTag("android:switcher:" + R.id.my_pager_id + ":" + position);
}
ViewPager
のすべてのアクティブなFragment
クラスがBundle
を受け取ることになりますし、あなたはそれをどうするかを決めることができます。
あなたは、このような
public void dispatchResultData(final Bundle data, final int requestCode);
として、ディスパッチャに多くの情報を渡し、それが関数呼び出しに答える必要がある場合は、あなたのFragment
決める必要があります。
基本的には完全に動作する完全なonActivityResult()
ユーティリティを構築しており、Fragments
(インスタンス化されている場合)のすべてが結果を受け取ることが保証されています。
関連する問題
- 1. onActivityResultが呼び出されていない - おそらく他のフラグメントと「混合」されていますか?
- 2. アクティビティがフラグメントから開始されたときにonActivityResult()が呼び出されない
- 3. ネストされたフラグメントのonActivityResultの2番目のIntentを呼び出すと、onActivityResultが再びコールされません。
- 4. フラグメントがバックスタックからポップされたときに呼び出されるライフサイクルメソッド
- 5. フェッチ呼び出しのネストによるネストされたデータへのアクセス方法
- 6. onActivityResultがsetResultの前に呼び出されました
- 7. 一度呼び出された後にAndroidタブビューから呼び出されたwebviewをリフレッシュする方法
- 8. jquery $ .post呼び出しで返されたデータに対してjquery呼び出しを実行する方法
- 9. ネストしたビューページのフラグメントが初期化されない
- 10. 別々のクラスから動的に作成されたコントロールを作成して呼び出す方法は?
- 11. フラグメントから呼び出されたときにsetNdefPushMessageCallbackパラメーター
- 12. 呼び出し元アクティビティでonActivityResultが呼び出されていません
- 13. Javascript:JSONからネストされたDIVを作成する方法
- 14. onActivityResultがchildFragmentとして呼び出されていない
- 15. sqlplusでネストされたスクリプトを呼び出す方法
- 16. emberJSでDataStoreにネストされた呼び出しを使用する方法は?
- 17. VB6で作成されたDLLをCから呼び出す
- 18. ビューポケベルのネストされたフラグメントメソッドをビューポケベルアクティビティから呼び出す方法
- 19. popBackStackImmediate()が呼び出されたときにフラグメントをリフレッシュする方法は?
- 20. didRegisterForRemoteNotificationsWithDeviceTokenがオプトアウトされたユーザーに対して呼び出されましたか?
- 21. onActivityResultが呼び出されていませんか?
- 22. AS3 - ネストされた動的にロードされたムービークリップからルート内の関数を呼び出す方法
- 23. API呼び出しから返されたJSONデータを使用してjquery auto suggestを作成する方法
- 24. reactコンポーネントでfetch()のネストされた呼び出しを正しく作成する方法は?
- 25. 親フラグメントからネストされたフラグメントのビューを作成するにはどうすればいいですか?
- 26. どのC++ベクタpush_backがループ内で作成されたオブジェクトに対して呼び出されますか?
- 27. Nodejsでネストされた非同期呼び出しをテストする方法は?
- 28. 動的プロキシ:ネストされたメソッド呼び出しを処理する方法
- 29. angularjsでネストされた矩形呼び出しを実現する方法
- 30. awesome_nested_fieldsネストされたモデルのネストされたフォームを作成する方法