[안드로이드 공부] 201

[안드로이드]날짜를 시스템 언어에 따라 표시하기

날짜를 시스템 언어대로 표시할 수 있는 코드입니다. 예) 한국어: 2016년 4월 8일 금요일 English(US) : Friday April 8 2016English(UK) : Friday 8 April 2016 FORMAT_NUMERIC_DATE 플래그 적용시: 4/8/2016 Calendar c = Calendar.getInstance(); int flags = 0; if(formatdate != 0){ flags |= DateUtils.FORMAT_NUMERIC_DATE; } if(year) flags |= android.text.format.DateUtils.FORMAT_SHOW_YEAR; if(day) flags |= android.text.format.DateUtils.FORMAT_SHOW_..

[안드로이드] java.lang.IllegalStateException: Cannot execute task: the task is already running.

AsyncTaks를 아래 방법으로 호출 하면 두 번 실행 하게 되는 효과를 발휘 한다. aAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR).executor(params); java.lang.IllegalStateException: Cannot execute task: the task is already running. aAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params) 요렇게 바꿔 줘야 한다.

[안드로이드] 6.0 마시멜로 DOZE 모드 adb 명령

마시멜로우는 배터리 미 충전 중, 오래 동안 폰 켜지 않을 경우 Doze 모드로 들어가서 낮잠을 주무신다... 이때는 알람이고 뭐고... 거의 받을 수 없는 상태가 되기에 꼭 실행 해야 할 작업이 있을 경우는 Doze모드를 해제 해야 한다. 그 때 필요한 작업은? 1. 다음 명령어를 통해 배터리가 충전되지 않도록 변경 합니다. $ adb shell dumpsys battery unplug2. 디바이스 스크린을 끕니다. 3. 다음 명령어를 반복 실행 하여, 디바이스 상태가 idle이 되도록 합니다.$ adb shell dumpsys deviceidle step4. 화면을 켜거나, 디바이스를 크게 움직이면 Doze 모드에서 빠져나옵니다. 5. 다음 명령어를 통해 배터리 충전 상태를 원래되로 되돌릴 수 있습니..

[안드로이드] 스트링으로 동적 값 적용하기

string.xml에 아래와 같이 작성을 하면, 동적인 값을 보여 주는 스트링을 만들 수 있다. 매번 스트링을 만드는 수고를 덜 수 있다. string파일 예) 08:%02d분, 09:%02d분, 10:%02d분 2%d는 두 자리수로 표기, 02%d는 01, 02, 03 처럼 표기 한다. 코드getString(R.string.test, Integer.parseInt(tempMinute), Integer.parseInt(tempMinute), Integer.parseInt(tempMinute));

[안드로이드] 프리퍼런스가 업데이트 안된다면?

말그대로 프리퍼런스(preference) summary가 없데이트 안 될 경우에는 어떻게 하느냐? 다른 화면을 갔다 올 경우에는 비교적 summary가 업데이트 잘 되지만, 한 화면에서 바로 바로 수정이 필요 할 경우에는 쉽지 않다. 만약, 잘 되다가 destory를 한 뒤 다시 들어 왔는데 이 때 부터 작동이 안된다면 ? 이전 글(BadTokenException)과 같은 내용의 해결 방법을 사용하면 된다. Preference를 static으로 만들어서 setSummary를 하면 된다. 어디서? onPreferenceChange(Preference pref, Object newValue) { 에서 받아온 pref로 pref.setSummary() 하지 말고 전역으로 선언해 놓고 하면 된다. 즉, publ..

[안드로이드] BadTokenException -is your activity running? 프리퍼런스에서 발생한다면?

이 에러는 참으로 갑자기 불쑥 나오기로 유명하다. 액티비티 종료 중에 컨텍스트를 사용하다가 잘 발생한다. android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@40b47bd8 is not valid; is your activity running? 1. 그래서 액티비티 종료 후에도 핸들러가 돌아 갈수도 있기에 갑자기 다이얼로그를 띄우는 등의 행동은 하지 말아야 할 것이다. 이럴때는 isFinishing()을 사용해서 예방 할 수 있다. 2. 또는 다른 액티비티와 연계되어서 발생 할 경우에는 getContext(), this.activity가 아닌 getParent()를 사용 하면 해결..

CheckBoxPreference - check상태에 따라 활성, 비활성 바뀌게 하기

활성상태일때만 설정을 가능하게 하고픈 메뉴가 있을 것이다.체크박스프리퍼런스를 사용하고 있다면,이럴때 유용한 field가 android:dependency 이다. android:dependency 자리에 CheckBoxPreference의 key값을 넣어주면 별도 .java 코딩없이 xml파일 만으로도 아래와 같은 결과를 얻을 수 있다. [그림]정각알림 사용하기 설정이 check되지 않았을 때는 분 설정하기 메뉴가 비활성화되고,check되었을 때에는 분 설정하기 메뉴가 활성화 된다. -> [소스]