반응형

안드로이드 27

안드로이드에서 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(..

앱이 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(),..

안드로이드 스튜디오에서 외부 라이브러리가 추가되지 않을때

말 그대로다. 삽질하다 기록하는게 좋겠다 싶어서 적는다.우선 링크는 http://androidhuman.com/530http://ggari.tistory.com/421참고. 그래서, 상황이 뭐냐면,1. 코드 관리를 위해 lib 를 따로 만들고2. 예제대로 추가해 봤는데3. 막상 컴파일하면 안됨. IntelliSense 에서도 자동완성 안됨.인 경우다. 백마디 설명글보다 그림이 편하다. 아래를 보자.빨간색 상자 중심으로 보자. 11. 라이브러리 프로젝트를 생성. 여기서는 mylibrary1 로 했다.12. 최초에는 TestLib1 이라는 java class 를 추가했다. -> 공유안됨. 추가안됨. 자동완성안됨.13. 삽질하다가, com.example.mylibrary1 아래에 TestLib2 로 class..

안드로이드에서, R.java 가 사라졌을때 + Resource 가 등록되지 않을때

제목 그대로다.황당해서 대처법도 제대로 몰랐는데, 명시적인 방법이 있어서 적는다. 1. 자세한건 링크 들어가면 됨 http://stackoverflow.com/questions/885009/r-cannot-be-resolved-android-error http://www.androidpub.com/1877913 2. 상황설명안드로이드의 res / drawable 폴더에 이미지를 넣었는데, 그 이미지를 R.id.drawable 로 접근이 안됐다.왤까? F5 를 하염없이 연타해 봐도 안되고... 조금 복잡하다. 최대한 간결하게 설명해 보자. 3. F5 를 눌렀는데도 불구하고 새 이미지를, R.id.drawable 로 가져올 수 없었다. = 즉, R.java 가 갱신 안 됐단 소리다. F5 를 눌렀는데도 불구..

OnTouch 이벤트가 안 먹을때는, MotionEvent.ACTION_POINTER_DOWN 대신 MotionEvent.ACTION_DOWN 을 써 보자.

말그대로다. 별 코드를 다 박아봐도 mouse down / mouse up 이 안 나와서 뭔가 했는데, 알고보니 예제 코드가 잘못된 거였다. 아래의 코드를 보자. public boolean onTouch(View v, MotionEvent event){switch ( event.getAction() ){case MotionEvent.ACTION_POINTER_DOWN :Log.v( "TEST", "_DOWN");break;case MotionEvent.ACTION_POINTER_UP :Log.v( "TEST", "_UP" );break;case MotionEvent.ACTION_MOVE :Log.v( "TEST", "_MOVE" ); break;}return true;} 인터넷에서 뒤져낸 코드인데, 아무..

안드로이드에서 RadioButton 의 on/off 가 제대로 움직이지 않고 오류가 발생할때

안드로이드에서 RadioButton 을 코드로 켜고 꺼 주려면 어찌해야 할까?예를들어 RadioButton radio1 = ( RadioButton )findViewById( R.id.radiobtn1 ); 이라면, 아마 맨 처음 생각하는 코드는 이런 거겠지. int rid = { R.id.radiobtn1, R.id.radiobtn2, R.id.radiobtn3 } ;for( int one : rid ){ radio1 = (RadioButton)findViewById( one ); radio1.setChecked( false );}radio1.setChecked( true ); 이건 이렇다. [ 저 코드를 작성한 시점에서 인터넷 안 뒤져보고 바로 디버깅 들어갔다면, 제대로 낚인거임. 나처럼 ] 결론부터..

반응형