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

2016년 8월 1일 월요일

FragmentPagerAdapter, FragmentStatePagerAdapter

소스코드 업데이트 하면서 다시 삽질을 하여 정리함...
정리하면 뭐하나 계속 삽질인데... ㅜㅜ

기존 포스팅
http://charlie0301.blogspot.kr/2013/10/fragmentpageradapter.html

관련 소스 코드
https://github.com/hallower/wimple/blob/master/src/kr/blogspot/charlie0301/WimpleActivity.java#L770

개발하던 App이 있는데 주된 동작이 NavigationDrawer을 선택하면 선택된 메뉴에 따라서 ViewPager의 Page들이 동적으로 업데이트 되어 진다.

FragmentPagerAdapter를 사용할 경우 fragment들이 바로 destroy되지 않고 재사용?되어FragmentStatePagerAdapter를 사용하여 개발하고 NavigationDrawer에서 메뉴가 선택될 경우 FragmentPagerAdapter에서 getItemPosition()을 overrride하여 기존 것은 POSITION_NONE을 리턴하게 하여 구현했었음.

이번에 업데이트 하다가 support library 사용을 업데이트하고 기존에 쓰던 오래된 view component를 변경했었는데 실수로 기존 코드에서 adaptor가 FragmentPagerAdapter로 변경되었던 것 같다. 테스트를 하는데 계속 fragment가 기존 정보를 물고 표시되고 업데이트 안되었고 강제로 ViewPager를 업데이트하려 Adapter 설정을 하도록 하여도 fragment가 업데이트 되지 않는 상황이었음.

암튼.. 한번의 실수로 시간 날리고 삽질하고.. 그냥 넉두리임.
아래는 테스트를 위해 사용한 sample code.

https://github.com/hallower/NavigationDrawerAndPager