2016년 8월 5일 금요일

Android Support Library 사용 시 옵션 메뉴의 showAsAction 오류 관련

예전에 만든 앱 업데이트 중인데
appcompat library를 추가해서 업데이트 중이다.

http://googledevkr.blogspot.kr/2014/10/appcompat-v21-material-design-for-pre.html

하지만 이전 소스 중 옵션 메뉴 부분 중 android:showAsAction 에서
다음과 같은 guide와 함께 에러가 발생함.

Should use app:showAsAction with the appcompat library with xmlns:app="http://schemas.android.com/apk/res-auto" less... (Ctrl+F1)
When using the appcompat library, menu resources should refer to the showAsAction in the app: namespace, not the android: namespace.

Similarly, when not using the appcompat library, you should be using the android:showAsAction attribute.     



확인해 보니 Android 2.1 이하의 android namespace에서는 showAsAction이 없어서
appcompat support library를 사용 중 위 옵션을 사용하려면 어쩔 수 없이 별도의 namespace를 사용해야 함.

해결책은 Android Studio에서 말하고 있다 시피 xml namespace 지정을 res-auto로 추가 지정해 줘야함.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"      
xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_go_to_whooing"
        android:orderInCategory="100"
        android:title="@string/action_go_to_whooing"
        app:showAsAction="always"/>
</menu>

https://github.com/hallower/wimple/blob/master/res/menu/main.xml

댓글 1개: