Navigation動畫
enterAnim:B頁面進入動畫。
exitAnim:A頁面結束動畫。
popEnterAnim:返回A頁面進入動畫。
popExitAnim:返回B頁面結束動畫。
<action
android:id="@+id/toB"
app:destination="@id/BFragment"
//B慢慢浮現
app:enterAnim="@android:anim/fade_in"
//A往右滑出
app:exitAnim="@android:anim/slide_out_right"
//返回A往左滑入
app:popEnterAnim="@android:anim/slide_in_left"
//返回B往右滑出
app:popExitAnim="@android:anim/slide_out_right" />
Navigation返回
單純返回
back.setOnClickListener {
findNavController().popBackStack()
}
自定義返回後的事件
requireActivity().onBackPressedDispatcher.addCallback(
requireActivity(), object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Toast.makeText(requireContext(), "自定義事件", Toast.LENGTH_LONG).show()
}
})
Navigation傳值
argument要設置在接收者的身上
defaultValue:預設值
name:參數Key值
argType:參數類型
<fragment
android:id="@+id/BFragment"
android:name="com.example.navigation.BFragment"
tools:layout="@layout/fragment_b">
<argument
android:defaultValue="Hello"
android:name="data"
app:argType="string"/>
</fragment>
傳值
//系統自動生成有帶參數的方法(空的話就會帶defaultValue的值)
findNavController().navigate(AFragmentDirections.toB("Hello Jetpack"))
取值
//取得系統生成args
private val args by navArgs<BFragmentArgs>()
info.text = args.data