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

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

將 Kotlin MainActivity 移植到 Java 時出現側面和底部導航問題

將 Kotlin MainActivity 移植到 Java 時出現側面和底部導航問題

動漫人物 2023-02-16 17:05:10
長話短說,我是 Android 環境的新手,在嘗試學習 Android 和 Kotlin 的過程中,我已經忍不住咬牙切齒了。我在 Kotlin 中創建了我的 UI 控制器,并使用 Google 示例代碼來執行片段導航。完成這個之后,我發現用 Java 編寫我的后端程序對我自己來說更有效率。不想在同一個應用程序中處理兩種語言,我成功地將所有 UI 控制器從 Kotlin 移植到 Java。但是,我被困在我的 MainActivity 類上。下面是 Kotlin 版本,兩個 XML 布局文件,以及我對 MainActivity 的 Java 版本的嘗試。混淆是關于 onCreate() 中的兩個方法調用 setupBottomNavMenu() 和 setupNavigation Menu()。BottomNavigationView 類似乎沒有 Kotlin 中的方法 setupWithNavController(NavController navController)。我能找到的最接近的是 setupWithNavController(BottomNavigationView bottomNavigationView, NavController navController)。如果我選擇這個,并注釋掉對 setupNavigation Menu() 的調用,應用程序將以縱向模式運行,但當我傾斜手機(橫向模式)時崩潰。NavigationView 類也不提供像 Kotlin 版本中那樣采用 NavController 類型的單個參數的方法。我再次選擇了類似的方法 setupWithNavController(NavigationView navigationView, NavController navController),但是我的應用程序在啟動時崩潰了。有人可以幫我解釋一下嗎?此刻我正在轉動我的輪子試圖了解發生了什么。我的導航 Gradle 導入是:def nav_version = "2.1.0-alpha03"implementation "androidx.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktximplementation "androidx.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
查看完整描述

1 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

語法?.elvis 運算符,它僅在對象不為空時運行以下表達式。

因此,這樣的調用bottomNav?.setupWithNavController(navController)分為兩個部分:一個 elvis 運算符和一個Kotlin 擴展函數(一個靜態方法,看起來就像是另一個類上的方法)。

等效的 Java 代碼需要做這兩件事才能等效:

if (bottomNav != null) {
    NavigationUI.setupWithNavController(bottomNav, navController);
}

(選擇是直接使用import static androidx.navigation.ui.NavigationUI.setupWithNavController;還是直接使用靜態方法更多的是風格問題——兩者都有效)


查看完整回答
反對 回復 2023-02-16
  • 1 回答
  • 0 關注
  • 75 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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