분류 전체보기 321

안드로이드에서 Super를 쓰지 않으면? Wrong state class -- expecting Preference State

갑자기 아래와 같은 에러가 뜬다면,java.lang.IllegalArgumentException: Wrong state class -- expecting Preference State 아무리... 코드를 봐도... 구글링을 해봐도.... 나에게 맞는 처방전을 쉽게 찾기가 거의 불가능에 가깝다.... 원인 조차도..... 1. preference XML 에 같은 ID를 쓰는 놈이 있는지 찾아본다.2. 동적 코드에서도 같은 ID를 쓰는 놈이 있는지 찾아본다. 여기까지 해서 해결이 안되면,3. onResume() 을 체크 해본다.4. 되도록 onResume()에서 refresh()를 구현 해준다. --> final ListPreference key = (ListPreference) findPreference(..

[안드로이드 스튜디오] avd 패스 설정하기

1G 넘는 avd를 여러 개 만들다 보니 디스크 공간 부족 알림이 뜬다.C: 드라이버에 avd가 생성되어 생긴 현상이다.공간이 넓은 D: 드라이버에 avd를 생성하고 싶어 방법을 찾아보았다. 1. ADNROID_AVD_HOME을 윈도우 환경변수에 지정했다. -> avd 생성은 되나 실행할 때 에러 발생한다. 2. ANDROID_SDK_HOME을 지정해 보았다.윈도우 환경변수에서 ANDROID_SDK_HOME 을 D:\Android\sdk 로 지정해 주었다.avd 매니저로 avd 만들어 보니 $ANDROID_SDK_HOME/.android/avd 폴더 아래에 avd가 생성되는 게 확인된다.(1. 에서 지정했던 ANDROID_AVD_HOME 환경변수는 삭제했다.)-> 문제 해결. 이제 C: 드라이버 공간부족..

[로그 자동화] 안드로이드 디버그 팁

클래스 마다 태그를 넣고 쓰지 말고, 한 곳에서 로그를 관리하도록 하면 편하다. 아래 처럼 Log 클래스를 따로 만들고 필요 한 곳에서 LOG_TAG 함수를 부르면 알아서 클래스 명까지 딱 찍어준다. public static String LOG_TAG = ""; public static String LOG_TAG(Context context){ LOG_TAG = ""; return LOG_TAG = "[" + context.getClass().getSimpleName() + "] "; } 그리고, 디버그 모드 일때만 사용하도록 자동화 시켜 놓자. public static final boolean LOGIF = BuildConfig.DEBUG ? true : false; 결국 이렇게 불러서 쓰면 if(Lo..

[안드로이드 스튜디오] 패키지명 변경시 에러 발생 주의

안드로이드 스튜디오에서 패키지명 변경을 하다가, 갑자기 manifest에 빨간불이 들어 올 수도 있다.기본적으로 패키지명 변경은 좌측 메뉴의 Package 또는 mafifest에서 com.comostudio.xxx를 블럭한 뒤 refactor 하면 된다. 하지만, 일반 소스에서 찾아서 변경하기를 할 경우 갑자기 아래와 같은 에러를 만나게 되니 주의 바람. uri is not registered (settings project settings schemas and dtds) attri android:icon not allowed here 인터넷 검색을 아무리 해봐도 setting에서 위와 같이 추가 해주란 말 밖에 찾을 수 없다... 분명히 잘 되던 소스였는데 갑자기 매니페스트에 대부분이 빨간 불이라면 저..

안드로이드 노티피케이션 여러줄 생성

안드로이드 4.1 젤리빈 이후 부터는 노티피케이션이 할 수 있는 일이 정말 많아졌으며, 사용하기 쉽게 변했다. 여러줄을 생성 할 수도 있는데, 아래와 같이 하면 된다. bigText()에 긴 텍스트를 넣어주면 된다. mBuilder = new Notification.Builder(mContext); mBuilder.setSmallIcon(R.mipmap.ic_launcher); mBuilder.setAutoCancel(false); mBuilder.setContentTitle(title); mBuilder.setStyle(new Notification.BigTextStyle().bigText(big)); mBuilder.setContentIntent(PIntent); mBuilder.setDefaults..

안드로이드 노티피케이션 지우지 않기(고정), Led 출력하기

노티 영역에서 지우기를 해도 남아있게 하기mNotification.flags = Notification.FLAG_NO_CLEAR; 노티가 왔을 때 LED로 알려주기mNotification.defaults = Notification.DEFAULT_LIGHTS;Led 대신DEFAULT_SOUND, DEFAULT_VIBRATE 을 설정 할 수도 있다. 사용자 설정 LED 값mNotification.ledARGB = Color.GREEN; mNotification.ledOnMS = 4000; mNotification.ledOffMS = 1000;mNotification.flags |= Notification.FLAG_SHOW_LIGHTS;

[안드로이드 스튜디오] avd 에 사용할 sdcard 만들기

안드로이드 api 버전별로 avd를 만들어서 data를 테스트 할 때,sdcard를 하나 만들어서 데이터(이미지 등)를 넣어 두면, avd 마다 data를 올릴 필요 없이 sdcard에 있는 데이터를 쓸 수 있다. 1. 윈도우 개발환경이라면 도스 커맨드 창에서 다음과 같이 명령어를 치면 1G 의 sdcard.iso 파일이 생긴다. Android\sdk\tools\mksdcard 1024M sdcard.iso (윈도우 환경변수에 PATH=F:\Android\sdk\tools; 추가해 두면 커맨드 창에서 파일경로 상관없이 명령어 쓸 수 있다.) 2. AVD 만들 때 Show Advanced Settings를 눌러서 SD card-External file 을 눌러 위에서 만든 sdcard를 불러오면 된다.