주의참고!!!! thdev.tech/android/2020/10/07/Remove-kotlinx-synthetic/
링크된 문서를 읽어보면 Kotlin Android Extension 에 대해 파악할 수 있는데, 간단하게 설명하면 코드 내에서 View 를 가져오기 위해 findViewById() 를 사용하던 것을 그러한 과정없이 바로 사용할 수 있는 방법이다.
위에 plug-in 설치 과정에서 'Kotlin Extension for Android' 가 obsolete 되었고 해당 plug-in 은 'Kotlin' plug-in 에 모두 통합되었다는 것을 볼 수 있다. 이 때문에 따로 설정 없이 바로 Kotlin Android Extension 를 사용할 수 있을 것이라고 생각했지만, 사용하기 위해서는 Gradle 에 한 줄을 추가해줘야 한다.
// build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
// 아래에 다음 코드를 추가해준다.
apply plugin: 'kotlin-android-extensions'
요즘은 Frgment 를 많이 사용하니 문서에는 설명이 없는 Fragment 에서의 사용법을 예제로 적어보겠다.
아래와 같은 fragment xml 파일에서 'greetings' 라는 id 를 갖는 TextView 의 text 를 "wow" 로 바꾸고 싶다면
<!-- fragment_main.xml -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="ee.maytr.www.kotlinexample.MainActivityFragment"
tools:showIn="@layout/activity_main">
<TextView
android:id="@+id/greetings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
import kotlinx.android.synthetic.main.<layout>.* 를 추가해주고
onViewCreated() 에서 수정해주면 된다.
// MainActivityFragment.kt
package ...
import ...
import kotlinx.android.synthetic.main.fragment_main.*
class MainActivityFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater!!.inflate(R.layout.fragment_main, container, false)
}
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
greetings.text = "wow"
}
}
여기서 좀 해맸는데, activity 에서 작업할 때는 onCreat() 에서 작업해도 상관 없지만, Fragment 의 경우에는 infalte 가 onCreateView() 에서 이루어지기 때문에 onViewCreated() 이후에 불리는 코드에서만 정상적으로 작동한다.
이제 Kotlin 으로 열심히 개발해봅시다!
==================================================================
1. bulid.gradle에 들어가서
2. kotlin-android-extensions 플러그인 추가
3. 사진에 표시된 Sync Now 클릭
잠시 기다리면 kotlinx.android.systhetic.main.activity_main.* 을 사용할 수 있게 된다.
'Android > Kotlin' 카테고리의 다른 글
입력란에 Text입력 후 하단 입력 키보드 내리기 (0) | 2020.11.23 |
---|