4 回答

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
Navigation.findNavController
依賴于findViewById()
,它僅在您調(diào)用后才起作用setContentView()
- 即,實(shí)際上將您的視圖添加到您的活動(dòng)中。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
使用適當(dāng)?shù)目刂破鱽?lái)避免 ID 不引用此 Activity 或片段內(nèi)的視圖?
如果您使用的是 Java
在活動(dòng)中使用
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment)
在片段中使用
NavController navController = NavHostFragment.findNavController(this) // or NavHostFragment.findNavController(view)
如果你正在使用 kotlin
在活動(dòng)中使用
val navController = findNavController(R.id.nav_host_fragment)
在片段中使用
val navController = findNavController()

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

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