web-dev-qa-db-ja.com

インスタント/(動的)機能モジュールを備えたナビゲーションコンポーネント

動的機能を備えたnewナビゲーションコンポーネントを実装しようとしています

したがって、構造は次のようになります。

  • アプリ(動的なdynamicFeatures = []がgradleに含まれています)
  • 特徴

    • ログインする
    • 等.
  • ライブラリ-> globalNav

それぞれの機能が完全に分離されているので、お互いに依存せずにこれらを接着する方法をうまく読んでいませんでした

egアプリ(app module)SplashActivityで始まり、セッションの状態をチェックするので、私の質問はどのように開始すればよいかです。 login_graphまたはhome_graphで、最初のケースでは、認証フローの終了後にホームを開始しますか?

私が現在それらを接着しようとしている方法は、globalNavモジュール(Androidライブラリ)を使用することです。いくつかの回避策を見つけました。

  • 完全なクラスパス。つまり、クラス名でインテントを開始します(これは実際にはスケーラブルではなく、PITAの維持につながるため悪いです)
Intent().setClassName(context.packageName, className).also { context.startActivity(it) }
  • ディープリンク(ナビゲーショングラフとして使用したかったものにはすでにそれらがあります)が、何らかの理由で、アプリだけがそれを実行する場合でも、常に「完全なアクションの選択」ピッカーが表示されます。

    • すでにactionsを使用してみましたが、ディープリンクと同じ動作です

どんな提案も素晴らしいでしょう:)


PS:私が見たり読んだりしているいくつかの参考文献:

PSS:良い解決策を見つけたら、これを積極的に理解しようとしています。必ず答えます。

編集

現在サポートされていないため、これに興味のある人は、ここで問題にスターを付けることができます: https://issuetracker.google.com/issues/132170186

11
Joaquim Ley

私も数分前に同じ問題に直面していました、そして私は答えを見つけようとしている間にあなたの質問を見ました。

私の場合、2つのモジュールapploginがあります。モジュールloginは、モジュールappに依存する動的機能モジュールです。モジュールloginには、ロギングを目的としたすべてのロジックとナビゲーションが含まれています(ログイン、登録などが含まれています)。このLoginActivity(すべてのナビゲーションが含まれるログインモジュールのアクティビティ)をアプリモジュールのメインナビゲーショングラフに含めたいと思いました。それを知らないアプリレイヤーからLoginActivityを呼び出すことはできません。だが

<activity Android:id="@+id/loginActivity"
    Android:name="login.LoginActivity"
    Android:label="LoginActivity"/>

メインのナビゲーショングラフに手動で追加するとうまくいきました。

0
Namiq Tehmezli