gingerbread 에서 동작하게 만들기
ActionBar
http://gyoju12.blogspot.kr/2012/05/actionbar-sherlock-actionbar.html
- 만약 Android 4.0 이 없다면 먼저 Android 4.0 sdk 를 설치
- ActionBar Sherlock download
- ActionBarSherlock\library 원하는 path 에 copy(물론 같은 drive에)
- IntelliJ 에서
File >> import Module >>android\SherlockActionBar >> Create module from existing sources
를 하면 된다. - 그리고 Main Module 에 dependency 를 추가해 주면 된다.
- 추가로 support-v4 도 Main Module 에 추가해야 한다.
- anroid 를 사용하고 있다면 v7 를 library 에서 없애고 사용하자. 그래야 제대로 실행이 된다.
- 혹시 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.htmlclass 수정
- 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
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 requiredAndroid - 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 버전 이후로 제공되는 기능이기 때문이다. 그래도 비슷하게 만들수 는 있다. 자세한 것은 아래를 참고하자.- http://developer.android.com/guide/topics/ui/notifiers/notifications.html#Compatibility
- <Android_sdk>\samples\android-10\ApiDemos\src\com\example\android\apis\app\StatusBarNotifications.java
등을 보면 된다.
댓글 없음:
댓글 쓰기