build.gradle bei Kotlin

  • Antworten:4
  • Bentwortet
Robbiani Renato
  • Forum-Beiträge: 609

06.03.2021, 15:59:13 via Website

Hallo zusammen

Wenn ich ein neues Kotlin Projekt anlege, dann wird unter app ein build.gradle mit folgendem Inhalt angelegt.

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

}

Projekt läuft ohne Probleme mit dem Nachteil, dass ich auf meine Komponenten, welche ich in der Activity angelegt habe, nicht zugreifen kann. Die werden einfach nicht gefunden.
Wenn ich aber den Codeauschnitt mit dem folgenden ersetze,

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

Dann kann ich auf meine Komponenten wieder Zugreifen und das Projekt läuft auch. Das einzige wo mich stört ist die Warnung, dass "apply plugin" veraltet ist und man soll das Projekt konvertieren.

Was kann ich tun? Wie kann ich auf meine Komponenten zugreifen wenn ich das build.gradle nach dem ersten Codeteil eintrage.

Gruss Renato

Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.530

07.03.2021, 12:37:01 via Website

Hallo
Eigentlich wird dir das in dem Link den du beim Gradle Sync bekommst erklärt wie das neue View Binding geht.
Hier der Link https://developer.android.com/topic/libraries/view-binding#kotlin
Das geht auch unter Java nur ist da in dem Doku Beispiel ein Fehler.
Auch Java kommt somit ohne findViewById aus.

Gradle

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


android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"

    buildFeatures {
        viewBinding true
    }

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

Activity

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.myapplication.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view);

        binding.name.text = "Hello Kotlin!"
    }
}

PS nach einfügen im Gradle mache ein ReBulid

— geändert am 07.03.2021, 13:03:47

Hilfreich?
Robbiani Renato
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

06.03.2021, 16:43:39 via Website

Hallo
Frage auf Was welche Komponenten kannst du nicht zugreifen ?

PS. Hast du auch auf das neuste Gradle 6.5 , und auch auf AndroidX migriert?

— geändert am 06.03.2021, 18:21:32

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

06.03.2021, 22:13:32 via Website

Ciao Jokel

PS. Hast du auch auf das neuste Gradle 6.5 , und auch auf AndroidX migriert?

Ja ich habe Gradle 6.5 und ebenfalls AndroidX

Ich habe ein neues Projekt angelegt mit einer TextView. Auf die TextView kann ich wie folgt ansprechen.

var obj_test = (TextView(findViewById(R.id.txt_test)))

Mit der alten Version konnte ich folgendes schreiben

txt_test.Text = ""

Das findet er nicht mehr.
Sitze ich auf dem falschen Dampfer oder geht das in der neuen Version nicht mehr?

Gruss Renato

Hilfreich?
Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.530

07.03.2021, 12:37:01 via Website

Hallo
Eigentlich wird dir das in dem Link den du beim Gradle Sync bekommst erklärt wie das neue View Binding geht.
Hier der Link https://developer.android.com/topic/libraries/view-binding#kotlin
Das geht auch unter Java nur ist da in dem Doku Beispiel ein Fehler.
Auch Java kommt somit ohne findViewById aus.

Gradle

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


android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"

    buildFeatures {
        viewBinding true
    }

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

Activity

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.myapplication.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view);

        binding.name.text = "Hello Kotlin!"
    }
}

PS nach einfügen im Gradle mache ein ReBulid

— geändert am 07.03.2021, 13:03:47

Hilfreich?
Robbiani Renato
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

07.03.2021, 17:31:50 via Website

Ciao Jokel

Klar habe ich den Link gesehen. Habe aber den Inhalt nicht verstanden. Jetzt ist mir alles klar. Danke für die einfache und klare Antwort.

Gruss Renato

Hilfreich?
Kommentieren