[안드로이드 공부] 207

안드로이드에서 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를 불러오면 된다.

[안드로이드 스튜디오] 디버그툴 사용하기

예전엔 매니페스트에서 디버그 모드 설정을 해주었는데, 안드로이드 스튜디오로 넘어 오면서 부터는 그래들에 설정을 해주면 된다. Waiting for device.Cannot debug application com.comostudio.xxxxx on device pantech-xxxxxx.This application does not have the debuggable attribute enabled in its manifest.If you have manually set it in the manifest, then remove it and let the IDE automatically assign it.If you are using Gradle, make sure that your current varia..