반응형

프로그램/안드로이드 38

안드로이드에서 view.getId() 가 -1 리턴

디버그 코드 찍어봤을때의 황당함이 딱 이랬다. 결론부터 이야기하면, view.getId() 함수는 R.java ( = 디자인을 통해 xml 에서 컴파일 단계에서 생성한 view ) 의 값에서만 뒤져서 가져온다. 즉, 프로그램 코드에서 동적으로 생성한 view 는, getId() 는 모두 -1을 반환한다. 왜냐구? 동적 생성이라 R.id 목록에 없거덩. 그럼 이걸 어떻게 해결해야 하느냐.동적 생성한 view 에 대해, view.setId( 아이디값 ) 으로 값을 부여하는 방법이 있다. 물론, 아무 값이나 키로 부여하면 중복될 수 있으니까, view.generateViewId() 로 유일한 값을 가져와서 부여하면 된다. 즉, int vID1 = -1; view v1 = new View(); v1.setId(..

안드로이드 view 동적 크기 변경. getLayoutParam() 안될때.

제목 그대로. 코드에서 동적으로 view 의 크기를 바꿔야 할 때가 있다. 이 때 가장 간단한 방법이 View.getLayoutParams().height = 123;View.getLayoutParams().width = 123; 일 거다. 그런데, 이게 안 먹는 때가 있다. 아마 객체의 동적 생성 순서 문제인 듯 한데. 어쨌던 뻑난다. 에러 코드는 아래와 같다. java.lang.NullPointerException: Attempt to write to field 'int android.view.ViewGroup$LayoutParams.height' on a null object reference 내용은 말 그대로, LayoutParams 를 통해 width height 를 변경하려고 했는데, 객체가 ..

java - xml 파서에서 cdata 처리법.

너님을 위해 결론부터 이야기 하면, 만들어 써라. 고객이 데이터를 xml 로 준다고 해서 받아봤는데, 컨텐츠 부분에 요런 식으로 써있더라? 아니 XML 인데 왜 CDATA 를 쓰냐고!! 그래서 파서를 수정하려고 좀 뒤져봤는데, 의외여서 기록으로 남긴다. 난 기존 제공되는 API를 쓰고 싶었는데, 의외로 답글들이 "만들어 써" 라고 하는군. 1. xml을 org.w3c.doc 으로 파싱하는 경우. http://stackoverflow.com/questions/25275248/how-to-parse-within-cdata-in-xml-using-java http://www.java2s.com/Code/Java/XML/GetcharacterdataCDATAfromxmldocument.htm 등을 참고. 원래 ..

안드로이드 스튜디오에서 프로젝트 파일을 읽지 못 할 경우.

말 그대로다. Android Studio v2.2.3 에서 발생.안드로이드 스튜디오를 실행했는데, recent project 가 load 되지 않고, 에러메시지는 달랑 "null" 하나. 정확하게는 "java.lang.NullPointerException" 프로그램 코딩 중이 아니라 프로젝트를 열다가 위의 에러가 뜨길레 황당했다. 뭘 어찌해야 할지도 모르겠고.인터넷 뒤져보니 예전부터 있던 버그인 듯. 무려 버전 1.2. 때부터 있는 버그인가 보다. http://stackoverflow.com/questions/30044635/android-studio-v1-2-0-start-up-error-java-lang-nullpointerexceptionhttp://stackoverflow.com/questions..

앱이 background 상태일때, FCM Notification event handler 를 수신하지 못하는 경우.

말 그대로다. 이거때문에 무려 이틀을 삽질했는데, 그 결과를 적는다. 일단, FCM 은 GCM 다음 나온 android notification 이다. ( notification 을 한글로 뭐라 해야 하나? "알림" 해버리면 Alarm 이랑 헷갈린단 말야. ) 이거 쓰는 방법이야 인터넷 보면 많이 있다. 대표적인 건 http://blog.naver.com/PostView.nhn?blogId=cosmosjs&logNo=220739141098&parentCategoryNo=56&categoryNo=&viewDate=&isShowPopularPosts=true&from=search http://www.inflater.co.kr/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-f..

Android PhoneCall 과 sms 는 동시에 못 쓰나?

난 당연히 동시에 못 쓸 거라고 생각했는데, 인터넷 뒤져보니까 동시... 까지는 아니더라도, 약간 시차를 두면 가능한가 보다. http://stackoverflow.com/questions/17513403/how-to-send-sms-in-background-during-a-phone-call 원래는 코드로 테스트 해 봐야 하지만, 귀찮아서.... 폰으로 A 에게 전화걸면서, 통화중에 B 에게 문자 날려 봤는데, 송수신 다 되네? 분명히 SMS 나 MMS 는 Phone 이랑 같은 회선을 이용할텐데, 어떻게 발신이 가능하지? Packet 기반이라서 가능한가?

AsyncTask 는 중복해서 못 쓰나?

말 그대로다. 왜그런지 모르겠는데, 두 개의 activity 에서 각각 async Task 를 실행시키니 동시에 돌아가지 않았다.정확하게는 Acitvity * 2 가 아니라, Service 1 , Activity 1 에 각각 async Task 가 돌아가고 있는거지.이리저리 디비그 코드를 찍어 본 결과, AsyncTask 는 둘 중 하나만 돌아가는 걸 확인했다. 그런데 인터넷 뒤져보니, Async Task 는 원래 중복으로 돌아가는 거란다. 그것도 128개까지 동시 돌릴 수 있다네? 통박으로 찍어보면, 아마도 1. 원래 asynctask 두 개 다 쓸 수 있는게 맞는 건데 내가 코드를 잘 못 짰거나2. 하나의 Activity 에서는 중복해서 쓸 수 있지만, 여러 Activity 가 중복된 상태에서 각각 ..

AlertDialog 에서 token null is not for an application 에러.

말 그대로다. 아래와 같은 에러가 발생해서 삽질한 결과를 기록한다. java.lang.RuntimeException: Unable to start activity ComponentInfo android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application AlertDialog 를 사용하려고 했는데, 잘 되던 코드가 뻑나서 삽질을 해 보니 AlertDialog.Builder builder = new AlertDialog.Builder( getApplicationContext() ); // 오류발생 AlertDialog.Builder builder = new AlertDialog.Bui..

안드로이드 에러 : Service Intent must be explicit

안드로이드에서 service 를 이용하려고 코드를 짰는데, 제목과 같은 에러가 나왔다. 짐작으로 삽질...하다가 혹시나 해서 에러 메시지로 검색해보니, 답이 나오더라. 언제나처럼 StackOverFlow 다. 상태 : 안드로이드 서비스 실행을 위해, 아래와 같은 방식으로 실행.startService( new Intent("package.MyService") );오류 : java.lang.IllegalArgumentException: Service Intent must be explicit해결 : intent 부르는 방식을 변경.startService( new Intent("package.MyService") );->startService( new Intent( getApplicationContext(),..

반응형