반응형

반응형

액티비티 생명 주기 메서드.

호출되는 메서드 액티비티 상태 설명
onCreate() 만들어짐 액티비티가 생성됩니다. 우리가 실제 코드를 가장 많이 작성하는 메서드입니다.
onStart() 화면에 나타남 화면에 보이기 시작합니다.
onResume() 화면에 나타남 실제 액티비티가 실행되고 있습니다.
현재 실행 중 (실행 중은 생명 주기 메서드가 따로 없고, onResume이 호출되었다면 실행 중이라는 의미입니다.)
onPause() 화면이 가려짐 액티비티 화면의 일부가 다른 액티비티에 가려집니다.
onStop() 화면이 없어짐 다른 액티비티가 실행되어서 화면이 완전이 가려집니다.
onDestory() 종료됨 종료됩니다.

 

 

 

반응형
Posted by 컴스터
,
반응형

안드로이드 스튜디오에서 프로젝트 관리 영역에서 Gradle Scripts 안에 build.gradle(Module:프로젝트명.app) 파일에

plugins {
id 'com.android.application'
id 'kotlin-android'
}

위와 같이 되어 있는 부분에 아래와 같이 추가 입력하고

plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'       // 이 부분을 추가 한다.
}

오른쪽 위에 Sync Now 를 클릭해준다.

그러면 MainActivity.kt 에서 위젯 ID 만 입력해도 인식이 된다.

 

=============================================================================

위 방법은 예전방법임 다음과 같이 써야합니다.

Gradle Scripts 안에 build.gradle(Module:프로젝트명.app) 파일에

android {

compileSdk 30
buildToolsVersion "30.0.3"

// 이 부분 추가 합니다.
buildFeatures {
viewBinding true
}

이하 생략......

}

buildFeatures {

viewBinding true오른쪽 위에 Sync Now 를 클릭해준다.

 

// MainActivity.kt 파일에 밑에와 같이 코딩해 준다.

class MainActivity : AppCompatActivity() {

// 추가 해준다.
private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

// 추가 해준다.
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

// 추가 해준다. textView 는 xml 파일에 위젯 아이디임.
binding.textView.text = "안녕하세요"
}

}

 

=====================================================

프레그 먼트에 바인딩하기.

1. Gradle Scripts 는 위와 같다.

class FragmentText : Fragment(R.layout.fragment_test) {

        private lateinit var binding: FragmentTestBinding

       override fun onViewCreated(view: View, saveInstanceState: Bundle?) {

               super.onViewCreated(view, savedInstanceState)

               binding = FragmentTestBinding.bind(view)

              binding.textView.text = "안녕하세요"    

       }

}

 

 

반응형
Posted by 컴스터
,
반응형

1. 데이터 저장하기.

private fun saveData(height: Int, weight: Int)
{
    val pref = PreferenceManager.getDefaultSharedPreferences(this)
    val editor = pref.edit()

    editor.putInt("KEY_HEIGHT", height)
        .putInt("KEY_WEIGHT", weight)
        .apply()

}

 

2. 데이터 불러 오기.

private fun loadData() {
    val pref = PreferenceManager.getDefaultSharedPreferences(this)
    val height = pref.getInt("KEY_HEIGHT", 0)
    val weight = pref.getInt("KEY_WEIGHT", 0)

    if(height != 0 && weight != 0) {
        heightEditText.setText(height.toString())
        weightEditText.setText(weight.toString())
    }
}


.apply()


}

반응형
Posted by 컴스터
,
반응형

코틀린 인터페이스

인터페이스는 미구현 메서드를 포함하여 클래스에서 이를 구현합니다.
추상 클래스와 비슷하지만 클래스가 단일 상속만 되는 반면 인터페이스는 다중 구현이 가능합니다.
주로 클래스에 동일한 속성을 부여해 같은 메서드라도 다른 행동을 할 수 있게 하는 데 사용합니다.

인터페이스의 선언.
다음과 같이 인터페이스에 추상 메서드를 포함할 수 있습니다.
원래 추상 클래스에서 추상 메서드는 abstract 키워드가 필요한데 인터페이스에서는 생략할 수 있습니다.

interface Runnable {
     fun run()
}

인터페이스는 구현이 없는 메서드뿐만 아니라 구현된 메서드를 포함할 수 있습니다. 

interface Runnable {
     fun run()

     fun fastRun() = println(“빨리 달린다”)
}

인터페이스의 구현.
인터페이스를 구현할 때는 인터페이스 이름을 콜론: 뒤에 나열합니다. 
그리고 미구현 메서드를 작성하는데 이때 override 키워드를 메서드 앞에 추가합니다.

class Human : Runnable {
     override fun run() {
     println(“달린다”)
}
}


상속과 인터페이스를 함께 구현.

다음과 같이 상속과 인터페이스를 함께 구현할 수 있습니다.
상속은 하나의 클래스만 상속하는 반면 인터페이스는 콤마로 구분하여 여러 인터페이스를 동시에 구현할 수 있습니다.

open class Animal {

}

interface Runnable {
     fun run()

     fun fastRun() = println(“빨리 달린다”)
}

interface Eatable {
     fun eat()
}

class Dog : Animal(), Runnable, Eatable {
     override fun eat() {
          println(“먹는다”)
     }

     override fun run() {
          println(“달린다”)
     }

}

val dog = Dog()
dog.run()
dog.eat()

반응형
Posted by 컴스터
,
반응형

코틀린 추상 클래스.

추상 클래스는 미구현 메서드가 포함된 클래스를 말합니다. 클래스와 미구현 메서드 앞에 abstract 키워드를 붙입니다.

추상 클래스는 직접 인스턴스화할 수 없고 다른 클래스가 상속하여 미구현 메서드를 구현해야 합니다.

abstract class Animal {

     abstract fun walk()

     fun run() {

     println("run")

     }

}

class Person : Animal() {

     override fun walk() {

     println("walk")

     }

}

 

반응형
Posted by 컴스터
,
반응형

안드로이드 스튜디오에서 코틀린 사용하기.

코틀린은 인텔리제이를 만든 젯브레인이 만든 언어입니다.

인텔리제이는 안드로이드 스튜디오의 전신이 되는 프로그램이므로 안드로이드 스튜디오에서 코틀린을 완벽히 지원합니다.

구글에서도 코틀린을 자바에 이어 안드로이드 공식 언어로 선언했습니다.

그런데 코틀린 문법만 테스트 하고 싶은데 어디서 어떻게 하는지 모르는 분들을 위해 포스트 해보려고 합니다.

간단합니다.

1. REPL 사용하기.

안드로이드 스튜디오에서 제공하는 코드를 한 줄씩 실행하는 셸인 REPL(Read-eval-print loop)을 사용할 수 있습니다.

새로운 언어를 학습할때 직관적으로 한 줄씩 실행시킬 수 있기 때문에 아주 유용합니다.

안드로이드 스튜디오를 실행해서 빈 프로젝트 아무거나 만듭니다.

프로젝트가 열린 상태로 안드로이드 스튜디오 상단 메뉴에서 Tools > Kotlin > Kotlin REPL 를 클릭합니다.

위와 같이 REPL를 실행합니다.


Choose context module 창이 나오면 현재 프로젝트를 클릭합니다.

REPL 창에 println() 을 입력하고 실행해본 결과 입니다.

이렇게 간단히 REPL을 사용하면 됩니다.


2. 스크래치 사용하기.

안드로이드 스튜디오는 REPL보다 더 편리한 스크래치를 제공합니다. REPL은 한 줄 단위로 코드를 실행할 때는 편리하지만 복잡한 코드 테스트 때는 불편합니다. 스크래치를 사용하면 복잡한 코틀린 코드도 쉽게 테스트할 수 있습니다.

프로젝트를 열고 안드로이드 스튜디오 상단 메뉴에서 File > New > Scratch File을 클릭합니다.


New Scratch File 선택창에서 Kotlin를 선택합니다.

에디터 창에 scratch.kts 파일이 열립니다. 여기서 자유롭게 코틀린 코딩을 연습할 수 있습니다.



스크래치를 처음 실행하고 나서 모듈을 app 모듈로 변경합니다. 이렇게 하면 프로젝트에서 작성한 클래스를 가져와서 테스트할 수 있습니다.

스크래치 파일은 프로젝트 창에서 Project 보기로 전환하면 Scratches and Consoles 아래에 생성됩니다.

이제 코틀린의 세계에 빠져 봅시다. ^^





반응형

'Android' 카테고리의 다른 글

벡터 드로어블 하위 호환 설정  (0) 2019.02.14
Anko 라이브러리 사용 하기.  (0) 2019.02.14
매개변수와 인수  (0) 2018.11.13
메소드와 함수의 차이  (0) 2018.11.13
안드로이드 장치의 빌드 버전 체크  (0) 2016.12.23
Posted by 컴스터
,
반응형

메소드와 함수의 차이

메소드와 함수를 혼동하는 경우가 많다.

일반적인 정의는 다음과 같다.

함수(function)는 이름을 지정해 호출하는 코드의 조각이다.

메소드(method)는 클래스의 인스턴스(객체)와 연결된 함수를 말하며, 종종 멤버 함수라고도 한다.

간단하게 말해 클래스 안에 있는 함수를 메소드라고 한다.

자바에서는 공식적으로 메소드만 존재하지만 학계에서는 정적 자바 메소드가 실제로는 함수라고 주장하기도 한다.

코틀린에서는 어떤 객체와도 연결되지 않은 함수를 정의할 수 있다.

반응형
Posted by 컴스터
,


반응형