[컴][안드로이드] 진저브레드(android 2.3 api 10) 에서 동작하게 만들기,

셜록 액션 바 / sherlock actionbar 사용하기 / v7 대신 sherlock actionbar 사용하기 / 진저브레드에서 액션바 사용하기 / sherlock actionbar 를 intelliJ 에서 사용하기


gingerbread 에서 동작하게 만들기


ActionBar


http://gyoju12.blogspot.kr/2012/05/actionbar-sherlock-actionbar.html

  1. 만약 Android 4.0 이 없다면 먼저 Android 4.0 sdk 를 설치
  2. ActionBar Sherlock download
  3. ActionBarSherlock\library 원하는 path 에 copy(물론 같은 drive에)
  4. IntelliJ 에서
      File >> import Module >>android\SherlockActionBar >> Create module from existing sources
    를 하면 된다.
  5. 그리고 Main Module 에 dependency 를 추가해 주면 된다.
  6. 추가로 support-v4 도 Main Module 에 추가해야 한다.
  7. anroid 를 사용하고 있다면 v7 를 library 에서 없애고 사용하자. 그래야 제대로 실행이 된다.
  8. 혹시 Test Module 을 사용한다면, 당연히 Test Module 의 dependency 에도 support-v4 와 ActionBarSherlock Module 을 추가해 줘야 한다.
참고로 ActionBarSherlock 에서 android-support-v4.jar 를 사용한다. 이 녀석을 최신으로 update 해줄려면 아래경로의 녀석을 수정하면 된다.

  • SherlockActionBar\libs\android-support-v4.jar

사용

http://actionbarsherlock.com/usage.html

class 수정

  • extends Fragment -> SherlockFragment
  • extends  ActionBarActivity -> SherlockFragmentActivity
  • 때때로, getActivity() -> getSherlockActivity()

import 수정

  • android.view.Menu -> com.actionbarsherlock.view.Menu
  • android.view.MenuItem -> com.actionbarsherlock.view.MenuItem
  • com.actionbarsherlock.view.MenuInflater
  • com.actionbarsherlock.app.ActionBar


함수 수정

  • getMenuInflater -> getSupportMenuInflater
  • getActionBar 를 getSupportActionBar

    • mActionBar = ((SherlockFragmentActivity) context).getSupportActionBar();

테마

application theme 를 아래 3개중 하나로 선택해야 한다. 물론 상속받아서 사용해도 된다.

  • Theme.Sherlock, 
  • Theme.Sherlock.Light, 
  • Theme.Sherlock.Light.DarkActionBar,

  • Widget.AppCompat.ActionBar > Widget.Sherlock.ActionBar
  • Theme.AppCompat.Light > Theme.Sherlock.Light
  • ?android:attr/actionBarSize -> ?attr/actionBarSize  (참고자료)



Notification

notification 에 expanded view 를 쓴다면 수정이 필요하다.

bigContentView

Error Message

java.lang.NoSuchFieldError: android.app.Notification.bigContentView

Solution

if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.JELLY_BEAN) {
   mNotification.bigContentView = getBigContentView();
}


contentIntent 설정

Error message

java.lang.IllegalArgumentException: contentIntent required

Android - java.lang.IllegalArgumentException: contentIntent required error caused by notification?

Solution

mNotification.contentIntent
                = PendingIntent.getActivity(this, 0, getIntentForMainActivity(), 0);



remoteView

gingerbread 의 notification 에서는 action button 이 안된다. 4.1 버전 이후로 제공되는 기능이기 때문이다. 그래도 비슷하게 만들수 는 있다. 자세한 것은 아래를 참고하자.



등을 보면 된다.






댓글 없음:

댓글 쓰기