編譯 Android版本時出現這個訊息,代表可能沒有正確引入 kotlin 的核心,找找看在 app/build.gradle 的 dependencies 中是否有

加入這行編譯才不會出錯

在 Android Studio 上進行 apk 的安裝或 debug 時,無法安裝、執行 apk 就結束了,並且在 debug 訊息欄中出現這個訊息

可能是 Run/Debug 的設定有錯,要進入 Edit Configurations 看看常用的設定是否有錯,預設的設定通常叫做 “app”,我們就是要修復這個 app 的設定。 (後面的圖因爲要截圖說明的關係,名稱已變成 “app2”,請無視它,這一系列的步驟都是在針對 “app” 這個設定項目來修復)

檢查一下最下方的 Before launch是否有設定,以我遇到的狀況,是沒有設定的,如下圖

使用 cordova platform add android 指令後,出現這段錯誤訊息,表示在 cordova-android 這個指令需要用到這模組 (錯誤訊息裡面會提到是執行到哪邊時找不到這個模組的)

請用 Terminal 到 “專案/node_modules/cordova-android” 目錄下,再使用 npm install queue-microtask 來安裝模組,在錯誤的位置下安裝是沒用的

安裝完應該就可以正常建立 android 專案了

在 NestedScrollView 內時,直接操作 RecyclerView 的 scrollBy、scrollToPosition 等函式會沒有作用,要操作 NestedScrollView 才可以動作

如下

在同一個 Layout 容器內 (LinearLayout, RelativeLayout 或 ConstraintLayout等等) 的各元件 z-Order 顯示順序,正常狀況下在 xml 檔中越後面定義的元件,會在越上層顯示。即後面定義的元件,繪製畫面時會覆蓋在前面定義的元件上

但有一個例外狀況,如果前面定義的元件有使用 elevation 屬性,則 z-Order 會失效

動態變更元件的 margin 時,要注意的是元件目前在哪種 Layout 裡面,就要轉型成該 Layout 的 LayoutParams。

範例中的 image 是裝在 ConstraintLayout 內,所以要轉成 ConstraintLayout.LayoutParams

androidx 的環境下,有時候在 xml 打 NavigationView,Android Studio 仍會提示你使用 android.support.design.widget.NavigationView,這時就會在 runtime 時造成 ClassNotFoundException 並讓 layout 停止 inflate,如果在程式中沒有操作到在該 NavigationView 之後定義的元件時,不會有重大錯誤。

但實際執行時,會在 inflate 到 NavigationView 時因為錯誤而導致 inflate 中斷,這時候在 xml 檔案 NavigationView 之後定義的其他元件,就處於沒有實體的狀態,如果操作到這些元件,會因 NullPointerException 而導致閃退

必須改用 com.google.android.material.navigation.NavigationView 才能解決

Seltzer Wang

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store