Android Studio用genymotion執行後小圖示無法顯示問題
阿新 • • 發佈:2020-04-04
提出問題
我做的是一個通訊錄,用到了選項選單,每一個選單項左邊我都添加了一個小圖示,執行後發現沒有顯示出來。
解決方案
利用反射機制,根據物件來尋找類,再根據類來找方法,在顯示選單選項的Activity中複寫onMenuOpened方法:
@Override public boolean onMenuOpened(int featureId,Menu menu) { if(menu!=null){ if(menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")){ try { Method method=menu.getClass().getDeclaredMethod("setOptionalIconsVisible",Boolean.TYPE); method.setAccessible(true); method.invoke(menu,true); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } } return super.onMenuOpened(featureId,menu); }
我解釋一下,因為設定圖示顯示這個方法是不可訪問的(private),所以我們才會這麼麻煩要用到反射機制來顯現圖示。
程式碼我也解釋一下,我們用menu物件來反射MenuBuilder
這個類,看這個類有沒有。得到這個類以後,再通過這個類得到它的方法,這個方法叫setOptionalIconsVisible
,這個是要自己打出來的,這個方法它是Boolean型別的。因為這個方法是私有的,所以我們要把不可訪問設定為可訪問的。最後我們呼叫method.invoke
設定true後將圖示變為可見的。
修改之後
好了,到這裡我們的圖示就顯示成功啦!
總結
到此這篇關於Android Studio用genymotion執行後小圖示無法顯示怎辦的文章就介紹到這了,更多相關Android Studio genymotion 小圖示無法顯示內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!