2016-07-13 3 views
2

新しいAndroid開発者として、1つのアクティビティからフラグメントまたはフラグメントへのデータをアクティビティに渡すのはあまりにも多くのコードを記述するようです。不思議なことに、ライブラリをデータを渡す目的の代わりに使うことができますか?それはアンドロイドアプリの1つの唯一のデータ受け渡しメカニズムとして使用できますか?正方形の柄を意図の代わりに使用できますか?

答えて

2

私はそれが可能かもしれないと思いますが、私が維持しなければならないコードではありません。

メッセージバスの使用は、メッセージの送信者と受信者が存在し、同時にアクティブであることを前提としています。アクティビティからインテントを経由して別のアクティビティに移行する場合は、通常、宛先アクティビティは存在しません。存在する場合はアクティブな状態ではありません。したがって、このモードでは、Intentをバスメッセージに置き換えることはできません。

Ottoはこれを行うために使用できる「プロデューサ」をサポートしていますが、やはり私は実際に提案しません。

アクティビティ間で大量のデータを渡す必要がある場合は、おそらく設計上の問題があります。これは一般に、適切な別個のデータモデルを持つ代わりに、アクティビティにすべてを埋め込んだことを示しています。

+0

ちょうど不思議なことに、あなたはLinus Torvaldsとの関係を持っていますか? –

+0

あなたの有益な答えをありがとう。あなたの答えから、私はオットーでこのようなことをすることは可能だろうと思っていますが、これを維持するのは難しいコードを書く必要があります。実際に私はアンドロイドでこれらのデータを渡したりバンドルしたりするためのパタンを見つけられませんでした。アクティビティと同様にアクティビティも片方向ですが、デバイスローテーションのためには、savedInstanceStateを管理しなければなりません。これらのすべてのデータがマタニズムを通過するまで私たちを導くためのリソースはありますか? @GreyBeardedGeek – rat

+0

私はあなたが見つけやすい唯一の確かなリソースは、インテントを通してデータを渡す方法に関する公式のAndroidのドキュメントだと思います。 私は正常にOttoをアクティビティに使用しました<->フラグメント通信(フラグメントライフサイクルにも役立ちます)、およびコミュニケーションのすべての関係者がバスに登録されている(入力の準備ができています)登録されていない。 これがうまく動作しない1つの場所は、アクティビティ<->アクティビティです(アクティビティは1回だけアクティブになるため(バスに登録する必要があります)。 – GreyBeardedGeek

2

ottoライブラリは、データを渡す目的の代わりに使用できますか?
はい、データを渡す手段としてotto(または他のイベントバス)を使用できます。

これは、アンドロイドアプリの唯一のデータ受け渡しメカニズムとして使用できますか?
はいまたはいいえにすることができます。あなたの必要性にかかっています。アクティビティとフラグメントで作業する場合は、インテントとバンドルを使用します。しかし、アクティビティとフラグメントの間にcommunicateを追加する場合は、ottoを使用できます。

関連する問題