Twitter にも書いたのだけど Android の Navigation の例外に困っている。
`java.lang.IllegalArgumentException: navigation destination XXX is unknown to this NavController`
— bouzuya (@bouzuya) October 1, 2019
ある Fragment A で findNavController().navigate(actionAToB())
する。そのとき既に Fragment A を離れてしまっていると IllegalArgumentException
が投げられる。通信処理の結果を受けて画面遷移するなどで意外と発生する。このへんどうやって対処しているのだろう。そも Navigation なんてものは使わないのか。
うまい方法が思いつかないので↓を簡単に実行できるようにしてごまかしている。
findNavController().let { navController -> // Fragment A に居ることを確認してから遷移する。 // 何も実行しなくても既に Fragment A から離れているわけで実害はない。 if (navController.currentDirection?.id == R.id.a) { navController.navigate(actionAToB()); } }