일반적인 변수 선언 private var mMainPresenter : MainContract.Presenter = MainPresenter(this) 우리는 일반적으로 위와 같이 선언하게 된다. 선언시 초기화를 하지 않는다면 이 선언의 문제점은 선언시 반드시 초기화해야 한다는 것에 있다. 초기화 문을 제거한다면 아래와같은 에러를 볼수있을것이다. 해결책은? private lateinit var mMainPresenter : MainContract.Presenter위와 같이 lateinit 키워드를 붙이면,선언시 반드시 초기화 하지 않아도 된다.
getCallingActivity() if(getCallingActivity().getClassName().equals(MainActivity.class.getName())) { /** Called From Main Activity */ } else { /** Called From Other Activities */ } * 주의사항 * startActivityForResult(..) 로 호출한 곳에서는 null 리턴될것임..
문제 상속받기 위해 아래와 같이 코드를 작성해보자.class BaseResponse { var rstCode:Int = 0 }class TestResponse : BaseResponse() { } TestResponse Class 가 BaseResponse Class 를 상속받게 되어있다.그러나 이대로 실행하게 되면 아래와 같은 에러메세지를 만날 수 있다. This type is final, So it cannot be inherited from.. 왜 ? Kotlin 에서는 기본적으로 모든 Class 가 final 이다.따라서 상속하여 재정의 하려면, 상속을 허용하는 open 키워드를 붙여주어야 한다. 해결 아래와 같이 BaseResponse Class 에 open 키워드를 삽입해준다. open cla..
6개월 전과 대비하여 6.0 마시멜로우 점유율이 28.6 % 로 약 3% 가량 하락했지만, 여전히 가장 높은 OS점유율을 가지고 있다. 앱 개발자는 총 점유율 70% 가량인 API 22, 23, 24 버전을 target 으로 놓고 개발해야 할 듯 싶다. (여담이지만, 4.4 Kitkat 의 경우 알뜰폰등 구형 안드로이드를 사용하시는 중/장년층의 비율 때문에 그렇지 않을까 추측해봄) 참조 : 안드로이드 OS 점유율
빌더 패턴을 검색하던중 Okky 에서 아래와 같은 글을 보았다. "Builder Pattern 을 사용하는 이유를 모르겠습니다" 글 내용은, 이렇게, setter 또는 Constructor 를 이용하여 멤버변수를 정의할 수 있는데, 왜 굳이 이렇게 코드를 길게 늘여서 쓰냐는 것이었다. 물로 내 생각도 질문자와 동일했다 (지금도 아직도... 왜 빌더패턴을 굳이 써야 하는지에 대하여 50% 정도만 이해하고 있는듯 하다) 내가 이해한 명확한 해답은 아래 두가지 였다. 1. 가독성 2. 필수값,, 선택값 여부
문제 8초 짜리 MediaPlayer 영상 객체에 OnCompletionListener 를 달아서 영상이 끝난 후 동작을 정의하였다. 이와중에, Skip 버튼을 달아서 seekTo(9000) 함수로 영상을 끝으로 보냈다. (9초)영상이 끝났으나 OnCompletionListener 가 호출되지 않는다. 원인 8초짜리 영상에 8초 이상의 seekTo() 를 호출하면 listener 가 동작하지 않는다.왜 그런지는... 안드로이드 리소스 상의 오류일까..? 해결 영상에 맞는 int 값을 입력해 주거나, 아래 링크를 참조하여 영상이 끝나는 시점을 구하여 입력해 준다. https://stackoverflow.com/questions/16259552/how-to-get-length-in-milliseconds-o..
얕은 복사 ? ArrayList 를 ArrayList 에 그냥 대입하는 것을 얕은 복사라 한다.아래를 보자. ArrayList arrStr1 = new ArrayList(); arrStr1.add("1");arrStr1.add("2"); ArrayList arrStr2 = new ArrayList(); arrStr2 = arrStr1; arrStr2.remove(1); 위 소스를 보면 1번 arr에 "1", "2" 를 추가한 후,2번 arr에 단순 대입한 후,2번 arr에서 "2"를 지워본 것이다. 결과를 출력해보면 알겠지만, 1번 arr 의 "2"도 삭제되어있을것이다. 결국, 단순 대입은 서로가 연결되어있다는 뜻. 해결책은? 깊은 복사. 로 해결한다. 깊은 복사? 아래 소스를 보면 된디ㅏ. ArrayL..
개요 테스트 프로젝트를 만들자마자 xml에 아래와 같은 내용을 추가했다. 체크박스와 progress bar 를 만들어 임의로 위치를 지정해 주고 에뮬레이터를 실행해보았다. 위와 같이 내가 지정한 곳에 위치되지 않는다. 무슨 문제일까? xml을 켜보니 에러가 있다.에러내용을 한번 보자. Error ? This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you add constraints 이 뷰는 constrained (강제된) 뷰가 아닙니다. 오직, 디자인 타임(?) 포지션을 갖습니다.따라서, 좌표 (0.0) 으로 강제됩니다. 에러 내용이다. 이게 무슨말일까 내가 추가한 두개의 뷰(체크박..
Version Codename API Distribution 2.2 프로요 8 0.1 % 2.3.3-2.3.7 진저브래드 10 1.7 % 4.0.3-4.0.4 아이스크림샌드위치 15 1.6 % 4.1.x 젤리 빈 16 6.0 % 4.2.x 17 8.3 % 4.3 18 2.4 % 4.4 킷캣 19 29.2 % 5.0 롤리팝 21 14.1 % 5.1 22 21.4 % 6.0 마시멜로 23 15.2 %
- Total
- Today
- Yesterday
- 앵커브리핑
- C언어
- Swift
- 리눅스
- BBC 가쉽
- Asterisk
- 노드
- node.js
- linux
- 손석희
- 배열
- Kotlin
- GIT
- xcode
- 스위프트
- 서버
- C
- CentOS
- 안드로이드
- 깃헙
- Node
- git hub
- IOS
- Phaser
- 점유율
- mysql
- php
- Android
- 뉴스룸
- nodejs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |