2016-07-07 6 views
1

私は3つのアクティビティを持っており、A、B、Cと呼んでいます。AはBとCの両方の親アクティビティです。活性A→B→C→A。 onActivityResultのBのデータを取得する方法

  1. A - > B - >プレスバックまたはアクションバーのボタンアップ - > A.
  2. A - > C - >プレスバックまたはアクションバーのボタンアップ - > A.
  3. - > B - > C - バック>を押し - > B.
  4. A - > B - > C - >アクションバーのボタンを押し - > A.

BとCの両方が格納されたデータを変更することができ私はBとCを意図してAに変更したデータを送り返し、AのonActivityResultを使ってそれらのデータを更新します。

Bが一部のデータを変更した場合、問題はフロー4にありますが、これらの変更をどのようにAに送り返すことができますか?私はそれらをCに渡し、CはそれらをAに送り返すべきですが、Cは絶対にそれらのデータを必要としませんか?

更新

私は流れ4.活動AのonActivityResultで返さIntentを受けていない、Intentパラメータは常にnullあるので、我々はA.

にCから任意のデータを渡すことはできませんことを発見

元々、AはCのIntentを受け取ると思いますので、BのデータをCに渡してAに渡すことはできますが、間違っています。アクティビティAはフロー4にIntentを受信しません。

ここで、上のボタンのアクションを変更して戻るボタンと同じにして、フロー4を終了します。

+0

(あなたは、コピーこのコードを貼り付け、必要に応じて操作することができますすることができます)、私はこのシナリオを次のように扱います。onCreate()でアクティビティAにブロードキャストを登録し、onDestroy()で登録を解除します。アクティビティCから同じインテントアクションでロードキャストを送信します。それは私の仕事にはかなり良いことですが、これが正しい解決策ではないかと疑います。他の人がもっと良い解決法を使ってこれに飛び込むことを願ってください。 –

答えて

0

何ら問題は流れ4.

ではありませんただ、Bに他のアクティビティにデータを渡す必要が修正データを必要としません。

他のフローのようにBが終了する前にsetResult()と呼んでください。成功しました。

0

これは、質問に直接答えではありませんが、推奨:活動またはあまりにも多くの活動の必要性との間に高い相互作用がある場合には

は、代わりにあまりにも多くの活動や活動の取引で、フラグメントを使用しようと

インタフェースを使用する(JAVAと同じ/類似)は、フラグメントのマジックワンドです。 フラグメンテーションを使用すると、ページを文字通りスワップする(Damned useful)ようにコーディングが簡単になります。

は、ここでの有用なリンクです:私も同じ問題を何度も直面し

  1. https://developer.android.com/guide/components/fragments.html
  2. https://developer.android.com/training/basics/fragments/creating.html
関連する問題