亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的 NavController 找不到我已有的 ID?

為什么我的 NavController 找不到我已有的 ID?

慕無忌1623718 2024-01-28 16:12:58
每次我啟動應用程序時,它都會崩潰,Logcat 會顯示以下內容:引起原因:java.lang.IllegalArgumentException:ID 未引用此 Activity 內的視圖所以我認為這是說沒有找到ID,但這是我的Java文件和XML文件相互對應。爪哇:NavController navController = Navigation.findNavController(this,R.id.nav_host_fragment);XML:<com.google.android.material.bottomnavigation.BottomNavigationView        android:id="@+id/nav_view"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:layout_marginStart="0dp"        android:layout_marginEnd="0dp"        android:background="?android:attr/windowBackground"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:menu="@menu/bottom_nav_menu" />    <fragment        android:id="@+id/nav_host_fragment"        android:name="androidx.navigation.fragment.NavHostFragment"        android:layout_width="match_parent"        android:layout_height="match_parent"        app:defaultNavHost="true"        app:layout_constraintBottom_toTopOf="@id/nav_view"        app:layout_constraintHorizontal_bias="1.0"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintVertical_bias="0.285"        app:navGraph="@navigation/mobile_navigation" />Logcat 說失敗,因為 java 文件 ID 沒有引用此 Activity 內的視圖。但我明明輸入了ID:nav_host_fragment。我不知道出了什么問題,當我進入 Android Studio 時,它沒有報告任何錯誤。請幫忙。
查看完整描述

4 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

Navigation.findNavController依賴于findViewById(),它僅在您調用后才起作用setContentView()- 即,實際上將您的視圖添加到您的活動中。



查看完整回答
反對 回復 2024-01-28
?
慕慕森

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()


查看完整回答
反對 回復 2024-01-28
?
HUH函數

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)


}


查看完整回答
反對 回復 2024-01-28
?
翻過高山走不出你

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)


查看完整回答
反對 回復 2024-01-28
  • 4 回答
  • 0 關注
  • 227 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號