[Android] Do not concatenate text displayed with setText

TextView의 내용을 setText() 메서드를 이용해 설정할 때 Do not concatenate text displayed with setText. Use resource string with placeholders.라는 경고문을 자주 볼 수 있다. 대략 setText로 표시된 텍스트를 + 로 연결해서 사용하지 말고 리소스 문자열을 placeholder와 함께 사용하라는 내용인데, 문자열 서식 지정을 이용하여 getString(int, Object...)의 값을 setText()에 넣어주면 된다.
자세히 보기

[Android] Intent: 액티비티 간 데이터 전달

인텐트(intent)는 컴포넌트가 운영체제와 통신하는 데 사용할 수 있는 객체다. 지금까지 보았던 컴포넌트는 액티비티뿐이지만, 컴포넌트에는 서비스, 브로드캐스트 수신자, 콘텐츠 제공자도 있다. 인텐트는 다목적 통신 도구로, 이것을 추상화한 Intent 클래스는 인텐트의 용도에 따라 서로 다른 생성자들을 제공한다. 여기서는 시작시킬 액티비티를 ActivityManager에 알려주려고 인텐트를 사용한다.
자세히 보기

[Kotlin] Data Class

어떤 클래스가 데이터를 저장하는 역할만을 수행한다면 toString, equals, hashCode를 반드시 오버라이드해야 한다. IntelliJ 같은 IDE는 이러한 메소드들을 자동으로 정의해주고, 작성된 메소드의 정확성과 일관성을 검사해준다. 하지만 코틀린은 더 편리하다! 이제는 이런 메소드를 IDE를 통해 생성할 필요도 없이 data라는 변경자를 클래스 앞에 붙이면 필요한 메소드를 컴파일러가 자동으로 만들어준다. data 변경자가 붙은 클래스를 데이터 클래스라고 부른다.
자세히 보기

[Android] ViewModel과 SIS

ViewModel은 특정 액티비티 화면과 연동되며, 해당 화면에 보여줄 데이터를 형식화하는 로직을 두기 좋은 곳이다. ViewModel은 모델 객체와 연동되어 모델을 '장식한다'. 즉, 모델 데이터를 화면에 보여주는 기능을 ViewModel이 수행한다. ViewModel을 사용하면 화면에서 필요한 모든 데이터를 한곳에서 종합하고 데이터를 형식화할 수 있다.
자세히 보기

[Android] 액티비티 생명주기

Activity의 모든 인스턴스는 생명주기를 갖는다. 그리고 생명주기 동안에 액티비티는 네 가지 상태, 즉 실행 재개(resumed), 일시 중지(paused), 중단(stopped), 존재하지 않음(non-existent)으로 상호 전환된다. 또한, 각 전환이 발생할 때 액티비티에 상태 변경을 알려주는 Activity 함수들이 있으며, 이 함수들은 안드로이드가 자동 호출한다.
자세히 보기

[Android] Model-View-Controller

안드로이드 API는 모델-뷰-컨트롤러(MVC)라는 아키텍처에 맞추어 설계되었다. 애플리케이션의 어떤 객체든 모델 객체 또는 뷰 객체 또는 컨트롤러 객체가 되어야 한다는 것이 MVC의 주요 관점이다.
자세히 보기

[Android] View, Inflate, Listener

뷰(View)는 UI를 만드는데 사용되는 구성 요소로 장치 화면에 보이는 모든 것에 해당한다. 사용자가 화면을 보며 상호 작용하는 뷰는 위젯이며 안드로이드 SDK에는 많은 위젯이 포함되어 원하는 UI를 구성 할 수 있다. 모든 위젯은 View 클래스의 인스턴스이거나 View의 서브 클래스 중 하나의 인스턴스다. 뷰그룹(ViewGrop)은 View의 일종으로 다른 뷰를 포함하고 배치해 화면에 보여주지만 그 자신은 화면에 나타나지 않는다. 레이아웃도 뷰그룹이며 뷰그룹의 서브 클래스에는 ConstraintLayout이나 FrameLayout 등이 있다.
자세히 보기