카테고리 없음

android_kotlin_위젯과 레이아웃 연결하기

zelkova 2021. 5. 11. 11:33

 

<목차로 돌아가기>

 

 

레이아웃 위젯 아이디가  txt_basic이라면

아래의 소스코드와 같이 레이아웃의 위젯을 연결하는 findviewbyid를 사용해야 한다.

1. tvtitle 선언

2. 레이아웃과 소스코드 연결

3. 위젯 제어하기.

class MainActivity : AppCompatActivity() {
    private var tvTitle: TextView? = null
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        tvTitle = findViewById(R.id.txt_basic);
        tvTitle.text="asdf"
    }
}

 

 

하지만 kotlin Extention을 사용하면 레이아웃에 아이디로 직접 접근이 가능해진다.(강추)

1. 위젯 제어하기.

2. 그냥쓰면 빨간줄로 찍 표시되는데 이건alt+enter눌러서 import시키면 해결.

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        txt_basic.text="ㅁㄴㅇㄹ"
    }
}

 

 

 

kotlin_extension사용하기

 

build.gradle에 아래처럼 나와있으면 정상

buildscript {
    ext.kotlin_version = "1.3.72"
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.3"
        // 아래의코드 확인
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

 

 

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

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"

    defaultConfig {
        applicationId "com.haman.kotlinbasiclanguage"
        minSdkVersion 28
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

 

 

 

 

 

참조하면 좋은 글

extension 사용시 참조 및 팁

 

반응형