撰寫 Android App 的工程師,通常都會選擇使用自己設定的 ToolBar(Action Bar) ,而為了能有效的控管 ToolBar ,同時會撰寫類似如下的語法:
setSupportActionBar(activityMainBinding.mainToolbar)
supportActionBar?.apply {
setDisplayHomeAsUpEnabled(true)
setHomeButtonEnabled(true)
}
【圖片來源: Android studio 擷圖】
Android studio Toolbar 的控管語法
此時若你去執行該 APP ,所得到的並不是你所要的畫面,而是會得到「閃退」外加在 Android studio 出現如下圖的錯誤訊息。
【圖片來源: Android studio 擷圖】
按文字的白話解釋就是「這個 APP 已經有一個由 window 所提共的 Action Bar,叫你不要在這裏設定其他的 Action Bar」,若將該錯誤訊息貼到網路上的搜尋,找到的都是告訴你是 AppTheme 所造成的,但事實上只要你未去動原生的 AppTheme ,理論上是不會有什麼錯誤的,即使你按照那些「一大抄」的內容去找,你可能會發現,怎麼都無效,原因很簡單,因我們沒去亂動 AppTheme 內的語法,因此問題決不會是 AppTheme 所造成的(如有去動到 AppTheme 就另當別論)。
這個錯誤事實上是控管 Action Bar 的語法所造成的,此時你會說,那不要寫那段不就得了,但若不寫那段,又會有兩個問題,首先你將無法控管你所設定的 Action Bar,再來就是執行時 APP 會出現兩個 Action Bar。
【圖片來源: Android x86 擷圖】
若未撰寫 Action Bar 控管語法,則會出現兩個 Action Bar
即然我們想控管自己設定的 Toolbar,同時又不希望 APP 出現兩個 Toolbar,那最簡單的方式便是,將 window 所提供的 Action Bar 關閉應是最好的解決方式。
———————————————————————
要關閉 window 所提供的 Action Bar,只要去修改「app/manifests/AndroidManifest.xml」的設定,在 AndroidManifest 預設內容如下圖所示,其中 theme 預設為「@style/Theme.ToolbarDemo」,這是 Android studio 建立專案時所建立的,因我們要使用自己設定的 Toolbar,因此我們不可以使用預設的 theme 樣式。
【圖片來源: Android studio 擷圖】
為了達我們的目的,我們要將原本 theme 的內容,由「Theme.ToolbarDemo」修改成「Theme.AppCompat.Light.NoActionBar」。
【圖片來源: Android studio 擷圖】
修改後,再去執行,不但不會有「Window.FEATURE_SUPPORT_ACTION_BAR」的錯誤訊息,同時畫面上的 Toolbar,也只會出現自己所設定的 Toolbar。
【圖片來源: Android x86 擷圖】
留言
張貼留言