A、X、Y、Zの4つのアクティビティを持つアプリケーションがあります。
Aは一種の着陸アクティビティであり、データベースからの一連の情報をユーザーに表示します。
X、Y、およびZは、データを変更するためにAによって開始されるアクティビティです。これらのアクティビティは実際にはデータベースにクエリを実行しませんが、変更された情報をAに返します。Aはですべての作業を実行しonActivityResult
ます。フローは常にA->XまたはYまたはZ->Aです。これは完全に機能します。
私がやりたいのは、保存ボタンがクリックされるまで、ユーザーがX、Y、Zの間を何度でもナビゲートできるようにすることです。これにより、A-> X-> Y->Z->Aが可能になるようにフローが変更されます。ただし、データは、[保存]をクリックするアクティビティ(この例ではZ)からのみ永続化する必要があります。その後、AはZから結果を受け取り、この変更を処理して続行します。ユーザーがこのようにナビゲートした場合、XとYで何が起こったかは関係なく、それらは破棄されています。
私はこれを何度か試みました。finish()
X、Y、またはZがA以外の別のアクティビティを開始した直後に呼び出すのが最善でした。これにより、ユーザーは[保存]をクリックするとAに戻ることができます。つまり、ナビゲーションの側面は正しいですが、送信される結果コードは常にRESULT_CANCELED
。インテントフラグの使用を検討しましたがFLAG_FORWARD_RESULT
、経験がなく、結果のためにすでに開始されているアクティビティで使用するとエラーがスローされます。私が読んだことから、呼び出し元のアクティビティと結果を返すアクティビティの間に1つのアクティビティがある場合にのみ使用されるため、これが適切な手法であるかどうかはわかりません。
そのような流れも可能ですか?基本的に、結果を得るために別のアクティビティを起動し、ユーザーがその2番目のアクティビティから任意の量のナビゲーションを実行できるようにし、ナビゲーションが完了したら結果を元のアクティビティに戻すためのアクティビティが必要です。X、Y、およびZがデータベースにアクセスするようにコードを変更することは可能ですが、可能であればそれを避けたいと思います。