問題タブ [android-jetpack-navigation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
214 参照

android - Jetpack ナビゲーションで MainActivity に移動する

MainActivity で SettingsListFragment から移動するにはどうすればよいですか?

私のナビゲーション グラフでは、MainActivity から画面を表示していないためです。1 つのアクティビティにあるナビゲーション全体、コードを確認できます

0 投票する
1 に答える
5525 参照

android - あるビューモデルから別の Android MVVM にデータを渡す

皆さんにデザイン関連の質問があります。

そのため、Google のGuide to App Architectureに従って、Kotlin、MVVM、およびデータ バインディングを使用してアプリケーションを構築しています。Google の規定に従って、Jetpack コンポーネント (ナビゲーション、ライブデータなど) を使用しています。

問題は、開発中にあるフラグメントから別のフラグメントにデータを転送する必要があることが何度もあるということです。以前は、フラグメントのインスタンスを作成し、複雑なデータを追加してから、次のようにフラグメントに移動していました。

目的地間でデータを渡すナビゲーションでは、このようにするか、同じドキュメントにも記載されているShared View Modelを使用する必要があります。>>

一般に、宛先間で最小限のデータのみを渡すことを強く推奨する必要があります。たとえば、オブジェクト自体を渡すのではなく、キーを渡してオブジェクトを取得する必要があります。これは、保存されたすべての状態の合計スペースが Android で制限されているためです。大量のデータを渡す必要がある場合は、フラグメント間でデータを共有するで説明されているように、ViewModel の使用を検討してください。

これは機能します。

問題は、アーキテクチャを使用する主な理由の 1 つが関心の分離であることです。きれいで保守しやすいコードを書くことができるように。この sharedviewmodel の使用は、(私の理解によると)その目的を無効にします。これは、大きな ViewModel クラスにつながるためです。

非常に一般的なシナリオで問題を説明しようとします。

データのリストを含むフラグメントがあります。リスト内の各項目はユーザーに対応しています。アイテムをタップすると、ユーザーの詳細画面に移動し、編集ボタンをタップすると、詳細を編集できる編集画面に移動する必要があります。

したがって、この状況では、ユーザー データをリスト クラスからビューおよび編集フラグメントに送信する必要があるため、ViewModel はこれら 3 つのフラグメント間で共有され、共有 ViewModel には 3 つのフラグメントすべてのビジネス ロジックが含まれます。

多くの場合、ViewModel は複雑すぎて次のような共有として管理できないため、これは私には適切ではないようです。

ビューモデルの同じインスタンスを提供します。

この共有ビューモデルの私の理解が間違っているかどうかを知る必要があります。間違っている場合は修正してください。私の理解が正しければ、そのような場合にビューモデルをより効率的に管理する方法を教えてください。

0 投票する
1 に答える
779 参照

android - ナビゲーションで safeargs を追加中にエラーが発生しました

フラグメントに safeargs を追加しようとしていました。私はこのコードラボに従っていました: Navigation Codelab。ただし、次の行を使用すると:

コンパイラ エラーが発生します。

分類子 'FlowStepFragmentArgs' にはコンパニオン オブジェクトがないため、ここで初期化する必要があります

これが私のメインのgradleファイルです:

と私のアプリgradleファイル:

私のnavigation.xmlは次のとおりです。

プロジェクトを複数回クリーンアップしましたが、効果はありません。私がここで犯している間違いを誰か指摘してもらえますか?

0 投票する
2 に答える
891 参照

android - jetpack-navigation で状態リストを保存する方法

jetpack-navigation を使用してアプリを設計しました 次の図に示すように、あるフラグメントから別のフラグメントに移動すると、リストのステータスが消えるという問題があります。

実際、レイアウトから戻ると、記事はスタックに再作成され、リストのステータスは保存されず、ユーザーは再度スクロールする必要があります。私を助けてください?

ジェットパック ナビゲーション