본문 바로가기

분류 전체보기

(64)
[안드로이드 Q&A] 프래그먼트에서 add()와 replace()의 차이점이 무엇일까? 프래그먼트를 주로 사용하면서 add()와 replace()가 과연 어떤 점이 차이점이 있는지 항상 궁금했다. 그래서 각 역할에 대해서 알아보고, 차이점을 정리해보기로 했다. replace()는 아래와 같이 사용된다. fragmentTransaction.replace(int containerViewId, Fragment fragment, String tag) 인자로 컨테이너 아이디와 대체할 프래그먼트, 그리고 옵션으로 태그값을 넣게 된다. 여기서 컨테이너에 추가되었던 기존 프래그먼트를 바꾼다. 동일한 containerViewId로 추가 했던 모든 프래그먼트에 대해서 remove(Fragment)를 호출하고 새로운 프래그먼트를 추가하는 것이다. add()는 아래와 같이 사용된다. fragmentTransac..
[코틀린] 고차함수 - 함수 참조와 익명 함수 이용 고차 함수에서 매개변수나 반환값으로 람다 함수를 많이 이용하지만, 함수 참조나 익명 함수를 이용해도 된다. 함수 참조를 이용한 함수 전달 고차 함수를 이용할 때 람다 함수 외에 함수 참조 연산자로 콜론 두개(::)를 이용할 수도 있다. 먼저 아래 소스코드는 람다코드로 작성한 코드이다. fun hoFun6(argFun: (x:Int) -> Int){ println("${argFun(10)}") } fun main() { hoFun6 { it * 5 } } [결과값] 50 고차함수를 선언하고, 매개변수로 함수를 받고 있다. 이렇게 선언한 고차 함수를 호출하면서 함수를 전달해야하는데 위의 소스코드에서는 it *5 라는 람다 함수를 넘겨서 10 * 5의 결과값을 출력하고 있다. 이런 소스 코드를 다음과 같이 함..
[안드로이드 개인공부] 안드로이드 스튜디오 단축키 안드로이드 스튜디오를 사용하면서 단축키에 대해서 알면 개발 속도에 영향을 줄 수있다. 그래서 구글링을 하는 도중 정리가 잘 되어 있는 좋은 자료가 있어서 아래와 같이 정리해보았다. Ctrl + Shift + A : Find in Action 찾고 싶은 기능을 영어로 입력하면 기능과 단축키가 나열된다. 단축키를 찾을 때 환경설정의 keymap으로 들어가는 수고를 줄여준다. 예시) 검색 문자 : Find in 같이 치면 이걸로 시작하는 기능이 표시 됨. Editing Ctrl + Space : 기본 코드 완성 Ctrl + Shift + Space : 스마트 코드 완성(예상되는 타입의 메소드또는 변수명 ) Ctrl + Q : 빠른 문서보기 Shift + F1 : 외부 문서보기(http://developer.a..
[코틀린] 고차함수 - 함수 반환 고차 함수는 다른 함수를 매개변수로 이용하거나, 반환하는 함수이다. 앞에서는 매개변수 부분에 함수를 이용하는 방법을 알아보았다. 이번에는 고차 함수에서 함수를 반환하는 방법에 대해 살펴보겠다. fun hoFun5(str: String): (Int, Int) -> Int { return when (str) { "*" -> { x1, x2 -> x1 * x2 } "-" -> { x1, x2 -> x1 - x2 } "/" -> { x1, x2 -> x1 / x2 } else -> { x1, x2 -> x1 + x2 } } } fun main() { val resultFun = hoFun5("*") println("resultFun * : ${resultFun(10,5)}") } [결과값] resultFun *..
[코틀린] 고차함수 - 매개변수 대입 고차함수란, 매개변수로 함수를 전달받거나 함수를 반환하는 함수를 말한다. 아래 소스에서는 fun 예약어와 hoFun이라는 함수명 그리고 ( )안에 매개변수, { } 안에 함수 내용을 선언했다. fun hoFun(x1: Int, argFun: (Int) -> Int){ val result = argFun(x1) println("x1 : $x1, result : $result") } fun main() { hoFun(10, {x -> x * x} ) } [결과값] x1 : 10, result : 100 하지만 일반 함수와는 차이가 있다. 두 번째 매개변수는 argFun: (Int) -> Int로 선언했다. 매개변수로 함수를 받고자 함수 타입을 선언한 것이다. 코틀린에서는 일반적으로 데이터 타입을 선언할 때 ..
[코틀린] 람다 표현식 람다식 또는 람다함수는 프로그래밍 언어에서 사용되는 개념이다. 익명함수라고도 부르며, 함수형 프로그래밍을 목적으로 하지 않더라도 간결함을 주 목적으로 사용된다. 함수형 프로그래밍에서는 람다 함수가 고차 함수의 매개변수나 반환값으로 사용되므로 더욱 중요하다. 코틀린에서 함수의 정의는 fun 예약어를 사용한다. fun 함수이름(매개변수) { 함수내용 } 람다 함수는 fun과 함수이름을 명시하지 않고 축약형으로 선언한다. {매개변수 -> 함수 내용} 람다 함수는 {}안에 매개변수와 함수 내용을 선언하는 함수로 아래와 같은 규칙을 정의한다. 1. 람다 함수는 항상 {}로 감싸서 표현한다. 2. {} 안에 -> 표시가 있으며 -> 왼쪽은 매개변수, 오른쪽은 함수 내용이다. 3. 매개변수 타입을 선언해야 하며 추론..
[코틀린] 일급 객체로서의 함수 코틀린에서 함수가 일급 객체로 활용되는 부분에 대해서 살펴보겠다. 코틀린의 함수 내에는 다양한 구성요소를 포함시킬 수 있다. fun superFun() { val superData = "hello" fun subFun1() { println("subFun1() .. superData : $superData") } fun subFun2(a: Int, b: Int): Int { subFun1() return a + b } class SubClass{ fun classFun(){ println("classFun() .. superData : ${superData}") } } subFun1() SubClass().classFun() } 함수를 클래스에 포함하지 않고, 함수 내부에 변수, 함수, 클래스를 선언했다..
[안드로이드 개인공부] Retrofit에 대해서 단계별로 공부해보자! 프로젝트 진행하면서 무작정 Retrofit 라이브러리를 사용했었다. 그래서인지 단계별로 왜 이렇게 구현하는 것인지, 왜 이것을 사용하는지 아무것도 모른 상태로 사용했다. 그렇기에 여기에 Retrofit의 기본 단계들을 공부하여 정리하려고한다. 일단, Retrofit은 안드로이드 및 자바를 위한 안전한 REST 클라이언트라고 말할 수 있다. 2010년 당시에는 네트워크 Request 보내기 위해서는 low-level java connection을 통해서 스레딩, json 파싱 등을 스스로 구현하여 사용해야했다. 이것들은 너무 복잡했다. 하지만 Retrofit은 이러한 복잡한 구현들을 모두 숨긴다. 즉, API와 Interact 하는 것을 더 쉽게 도와준다. 그렇기에 개발자들은 더 쉬운 네트워크 통신을 하기..