この記事では、このSafe Argsが誰であるか、それがどのように生活を楽にするか、そして舞台裏を含め、その仕事の成果は何であるかを学びます。
これで、マルチモジュールプロジェクトのナビゲーションコンポーネントに関する大きな記事の第2部になりました。ナビゲーションコンポーネントについて初めて聞く場合は、最初にナビゲーションコンポーネントとは何かを読むことをお勧めします。すでに基本に精通している場合は、最も興味深いものに進むことができます。
Safe Argsは、ナビゲーションコンポーネントとは別のプラグインですが、ライブラリの操作を簡単にするために特別に作成されました。これを使用すると、宛先IDを指定して、バンドルを介してパラメーターを渡す必要はありません。プラグインは、このために個別のクラスを生成し、それらを操作するための一連の拡張機能を備えています。それがすべてどのように機能するかを理解しましょう。
まず、プラグインとともに、xmlに<argument>という新しいタグがあります。アクションと宛先の両方に適用できます。これにより、より便利な方法でパラメーターを送受信できます。次に、グラフで指定された画面と遷移に基づいて、idアクションの代わりにNavControllerで指定できる特別なクラスが生成されます。
コードを見せて!
<navigation
xmlns:android=”http://schemas.android.com/apk/res/android"
xmlns:app=”http://schemas.android.com/apk/res-auto"
xmlns:tools=”http://schemas.android.com/tools"
android:id=”@+id/graphuserflow”
app:startDestination=”@id/fragmentUserList”>
<fragment
android:id=”@+id/fragmentUserList”
android:label=”FragmentUserList”
android:name=”com.example.usersList.UserListFragment”
tools:layout=”@layout/fragmentuserlist”>
<action
android:id=”@+id/actiontouserdetails”
pp:destination=”@id/fragmentUserList” >
<argument
android:name=”userId”
app:argType=”integer”
app:nullable=”false” />
</action>
</fragment>
<fragment
android:id=”@+id/fragmentUserDetails”
android:label=”FragmentUserDetails”
android:name=”com.example.usersList.UserDetails”
tools:layout=”@layout/fragmentuser_details”/>
</navigation>
: , , . — <argument>, users details userId. , .
class UserListFragmentDirections private constructor() {
private data class ActionUserFromListToDetails(
val userId: Int
) : NavDirections {
override fun getActionId(): Int = R.id.actionToUserDetails
override fun getArguments(): Bundle {
val result = Bundle()
result.putInt(“userId”, this.userId)
return result
}
}
companion object {
fun actionToUserDetails(userId: Int): NavDirections =
ActionToUserDetails(userId)
}
}
generated- , , — , , . userId.
:
navController.navigate(
UserListFragmentDirections.actionToUserDetails(userId)
)
destination- extension, .
private val args by navArgs<UserDetailsFragmentArgs>()
private val userId by lazy { args.userId }
, Bundle, .
Safe Argsは、ナビゲーションコンポーネントへの優れた追加機能です。これにより、遷移IDの操作と、引数の送受信の処理が簡単になりました。それを使用するかどうかはあなた次第ですが、さらなるナレーションはこのプラグインの使用に基づいています。ネタバレ注意:それは多くの問題をもたらすでしょう、しかし結局誰もが幸せになるでしょう:)
そして今、楽しい部分に。SafeArgsおよびiOSのようなマルチスタックナビゲーションとともに、マルチモジュールプロジェクトでナビゲーションコンポーネントを使用して作業を整理する方法を見てみましょう。