Fragment에서 Context 사용시 NullPointerException 오류 Fragment를 사용하면 부모 Activity의 Context가 필요할 때가 있다. Context의 종류에는 여러 종류가 있지만 보통 우리가 필요한 Context는 Activity의 Context다 (Activity의 Context는 일부 Context 보다 덩치가 크므로 옛날에는 때에 따라서 적절한 Context를 쓰는게 메모리 관리나 최적화 측면에서 좋았지만 기기성능이 매우 좋아진 요즘은 괜히 Activity가 아닌 Context를 썼다가 앱이 Crash되는 현상이 생기므로 Activity의 Context를 주로 사용하는것을 추천한다) Fragment에는 getActivity()라는 함수가 있다. 함수명 그대로 부모 Activity의 context를 가져오는 함수다. 해당 함수로 앱을 열심히 만들고.. 개발삽질방/Android 5년 전
Kotlin Migration Check List UI Component 초기화 일반적으로 안드로이드 스튜디오에서 제공하는 자바-코틀린 변환 툴을 쓰면 UI Component를 두 가지의 방식으로 컨버팅 한다 //Type 1 private tvTest:TextView? = null //Type 2 private lateinit tvTest 두 개 중 어느 것이 맞는 것일까? Type 1의 경우에는 사실상 null이 허용되는 객체가 되어버리므로 코틀린의 Null-safety 정책(NullPointerException의 제거)에 어긋난다. tvText!!.setText = "Text" !! 연산자를 사용하게 됨으로써 NullPointerException의 발생 가능성이 있다 따라서 Type 2의 방법으로 UI 컴포넌트를 초기화해주는 것이 맞다 참고 : Wh.. 개발삽질방/Android 5년 전
[Android] 에뮬레이터에서 한글이 보이지 않는 문제 아쉽게도 안드로이드 5.0(Lolipop) 미만의 에뮬레이터에서는 한글이 보이지 않는다 예전에는 잘 보였으나 어느 순간 한글 폰트가 빠지기 시작했다 보통 minSDK를 정할 때 주요 서비스(카카오톡)등을 기준으로 정하는데 아직 4.4 Kitkat을 쓰는 사람이 많아서 대부분 이거에 맞추는 데다가 꽤나 오래갈 것 같다 그래서 어쩔 수 없이 5.0 미만의 에뮬레이터에서 테스트가 필요하고 그러기 위해서는 한글 폰트를 이 에뮬레이터 안에 넣어야 한다 인터넷에 각종 방법이 있지만 에뮬레이터의 이미지에 시스템 파일을 넣는 거라 아주 복잡하다 그나마 쉬운 방법을 찾아서 포스팅해본다 우선 SDK 폴더의 platform-tools 폴더와 emulator 폴더를 export 해준다 export가 되었다면 emulator .. 개발삽질방/Android 6년 전
[Android] flavor 사용시 Provider 때문에 앱 동시 설치가 안되던 문제 안드로이드 개발시 보통 flavor을 사용해 다중 앱(개발, 상용)를 만드는데 provider 사용시 authorities가 중복되면 앱이 설치되지 않는 문제가 있다 다중 앱에서 패키지 명을 다르게 했다면 authorities에도 ${applicationId}를 사용해서 authorities에 다른 패키지명이 들어가게 해야한다 개발삽질방/Android 6년 전
[Android] 앱 계정 이전(이관)하기 안드로이드 앱 개발자 계정을 이전하는 방법입니다.다음 사이트로 접속합니다. https://support.google.com/googleplay/android-developer/checklist/3294213?hl=ko 체크리스트 항목이 나오는데 모든 사항을 체크하면 마지막에 양식폼이 나오게 됩니다.양식폼에서는 이름과 기존 계정 정보, 이전 계정 정보를 입력하게 됩니다.월렛 거래 ID는 개발자 계정 등록 당시 거래 영수증에 있습니다.구글 월렛으로 들어가 개발자 계정 등록시 지불했던 거래 내역을 클릭하면...이렇게 오른쪽에 거래 ID가 표시됩니다. 양식 폼을 작성하고 제출하면 문제가 없을시 2일 이내에 이전이 완료됩니다. 개발삽질방/Android 6년 전
[Android/Java] Key Hash 로그에 찍기 try { PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (Exception e) { }Release Key Hash를 찍으려면Release때 로그를 찍도록 설정해줘야 한다(보안에 매우 .. 개발삽질방/Android 6년 전