2016-04-27 3 views
0

私のアプリには3つのアクティビティがあります:LoginActivity、PreferencesActivity、LoggedActivity。ダガー2:依存関係をいかに適切に再利用するか - コンポーネントとスコープを設計する方法

流れがあることができる:

  • 1) LoginActivity - > PreferencesActivity(ユーザがログイン活動から環境設定を開くことができる)
  • 2) LoginActivity - > LoggedActivity - > PreferenceActivity(ユーザが開くことができますいくつかの設定は隠されています)

私は3つのスコープと3つのコンポーネントが必要です:

@AppScopeと
  • AppComponent(APP-ワイドシングルトン)@ActivityScope(のみ各アクティビティの範囲)

有する他

  • (ユーザがログインしている場合にのみ生きている)@UserScopeとUserComponent
  • UserComponentはログインが成功した後に作成され、ユーザーがログアウトすると破棄されます。しかし、私はPrefActivity(フロー2)にその情報が必要です

    私はこれらのすべてのコンポーネントを設計する方法がわかりません。私のPreferenceActivityでは、ユーザーがログインしているかどうかを知る必要があるからです。 LoginActivityからログインしていないときにすべての設定を表示する。

    両方のケースを組み合わせるにはどうすればよいですか?

    ありがとうございます。

  • 答えて

    0

    PreferenceActivityUserComponentに従ってください。別の(ログアウトした)ユーザーに対して異なる動作をさせようとしているので、これも意味があります。

    あなたのUserModuleにインターフェイスを返します。 PreferencePresenterと、認証されたユーザーがいるかどうかによって、UserPreferencePresenterまたはDefaultPreferencePresenterが返され、適切な設定が表示されます。

    +0

    しかし、 'UserComponent'は' LoggedActivity'で作成されるので、ユーザはログインしなければなりません。 'LoginActivity'から' PreferenceActivity'を開くこともできます。私はあなたのものに似ているかもしれないアイデアを持っています...それは、 'Application'クラスでは、ユーザーがログインしていない場合は' null'になる 'UserComponent'参照を保持しています。 – Tomask

    関連する問題