使用导航组件处理片段的正确方法是什么?

时间:2019-07-09 06:25:28

标签: android android-fragments android-architecture-navigation

有几种切换视图的方法。

但是,我经常遇到此错误。

java.lang.IllegalArgumentException: navigation destination io.monolabs.finalmouse:id/up is unknown to this NavController
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at androidx.navigation.NavController.navigate(NavController.java:804)
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at androidx.navigation.NavController.navigate(NavController.java:745)
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at androidx.navigation.NavController.navigate(NavController.java:731)
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at androidx.navigation.NavController.navigate(NavController.java:719)
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at com.example.ui.MainActivity.openWeb(MainActivity.kt:45)
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at com.example.ui.MainActivity$onCreate$1.onClick(MainActivity.kt:58)
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at android.view.View.performClick(View.java:6597)
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at android.view.View.performClickInternal(View.java:6574)
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at android.view.View.access$3100(View.java:778)
2019-07-09 15:07:07.548 17641-17641/com.example W/System.err:     at android.view.View$PerformClick.run(View.java:25885)
2019-07-09 15:07:07.549 17641-17641/com.example W/System.err:     at android.os.Handler.handleCallback(Handler.java:873)
2019-07-09 15:07:07.549 17641-17641/com.example W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
2019-07-09 15:07:07.549 17641-17641/com.example W/System.err:     at android.os.Looper.loop(Looper.java:193)
2019-07-09 15:07:07.549 17641-17641/com.example W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6669)
2019-07-09 15:07:07.549 17641-17641/com.example W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2019-07-09 15:07:07.549 17641-17641/com.example W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
2019-07-09 15:07:07.549 17641-17641/com.example W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
  1. findNavController(R.id.fragment).navigate(R.id.webviewFragment)
  2. findNavController()。navigate(R.id.webviewFragment)
  3. Navigation.findNavController(R.id.nav_host).navigate(R.id.webviewFragment)
  4. Navigation.findNavController(mView).navigate(R.id.action_mainFragment_to_webFragment)

...

实现它的方法确实很多。

对于findNavController()

  1. 没有参数
  2. 参数:查看对象
  3. 参数:ViewId(R.id.nav_host)

对于navigate()

  1. 参数:action_id
  2. 参数:navigation.xml中的fragment_id

我想知道这些情况。

  1. 活动中
  2. 在片段中
  3. 活动内部类
  4. 在片段的内部类中
  5. 在适配器中
  6. 其他情况...

谢谢。

0 个答案:

没有答案