4 回答

TA貢獻1909條經驗 獲得超7個贊
Navigation.findNavController
依賴于findViewById()
,它僅在您調用后才起作用setContentView()
- 即,實際上將您的視圖添加到您的活動中。

TA貢獻1856條經驗 獲得超17個贊
使用適當的控制器來避免 ID 不引用此 Activity 或片段內的視圖?
如果您使用的是 Java
在活動中使用
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment)
在片段中使用
NavController navController = NavHostFragment.findNavController(this) // or NavHostFragment.findNavController(view)
如果你正在使用 kotlin
在活動中使用
val navController = findNavController(R.id.nav_host_fragment)
在片段中使用
val navController = findNavController()

TA貢獻1836條經驗 獲得超4個贊
我認為一旦創建了視圖我們就必須使用它。嘗試將代碼放入 onPostCreate 中,效果很好。
注意:它在 onCreateView 中不起作用
override fun onPostCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onPostCreate(savedInstanceState, persistentState)
val navController=findNavController(R.id.navHostFragment)
}我認為一旦創建了視圖我們就必須使用它。嘗試將代碼放入 onPostCreate 中,效果很好。
注意:它在 onCreateView 中不起作用
override fun onPostCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onPostCreate(savedInstanceState, persistentState)
val navController=findNavController(R.id.navHostFragment)
}

TA貢獻1875條經驗 獲得超3個贊
萬一有人遇到我遇到的問題。我試圖訪問導航中的嵌套資源。
代替
val navController = findNavController(R.id.nav_print)
更新至
val navController = findNavController(R.id.nav_host_fragment_content_main)
navController.navigate(R.id.nav_print)
添加回答
舉報