J'essaye d'essayer Kotlin et les extensions Kotlin Android dans Android Studio. J'ai essayé cela à la fois dans Android Studio v 1.5.1 sur Ubuntu 14.04 et dans Android Studio v 1.5.1 sur OS X El Capitan avec le même résultat.
Voici ce que je fais:
- J'installe le plugin Kotlin 1.0.0-beta-35950-IJ141-11
- Créer un nouveau projet Android vierge
- Convertir le fichier MainActivity en Kotlin (via help-> findaction-> convertir le fichier en kotlin)
- Configurer le projet pour Kotlin
Je vais ensuite dans le fichier content_main.xml généré et j'ajoute un identifiant (bonjour) pour le "Hello World!" Affichage.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.gmail.npnster.mykotlinfirstproject.MainActivity"
tools:showIn="@layout/activity_main">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id="@+id/hello"
/>
</RelativeLayout>
Ensuite, dans le MainActivity converti, j'ajoute une ligne pour définir le TextView. (indiqué ci-dessous). Android Studio me demande ensuite (via alt-enter) d'insérer cette ligne (également illustrée ci-dessous)
import kotlinx.android.synthetic.main.content_main.*
Donc à ce stade tout semble bien
mais quand j'essaye de compiler ça, j'obtiens
Unresolved reference: kotlinx
Unresolved reference: kotlinx
Unresolved reference: hello
Notez que je n'ai pas installé le plugin d'extensions Kotlin Android. Il y a quelques jours, cela est censé être inclus dans le plug-in principal et est marqué comme obsolète. (En fait si vous essayez de l'installer lorsque vous avez le dernier plugin, rien de nouveau n'est installé)
Quelqu'un voit ce que je fais de mal?
Activité principale
import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.View
import android.view.Menu
import android.view.MenuItem
import kotlinx.android.synthetic.main.content_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar = findViewById(R.id.toolbar) as Toolbar
setSupportActionBar(toolbar)
print("setting text view value to hey")
hello.text = "hey"
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener { view -> Snackbar.make(view, "Replace this with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show() }
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
val id = item.itemId
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true
}
return super.onOptionsItemSelected(item)
}
}
Réponses:
Ajoutez
kotlin-android-extensions
les dépendances de notre buildscript:1. Dans votre build.gradle au niveau du projet
et appliquez le
kotlin-android-extensions
plugin:2. Dans votre build.gradle au niveau du module
Réponse originale:
C'est probablement un bogue dans le plugin Kotlin. J'ai déposé un problème sur leur tracker.
la source
apply plugin: 'kotlin-android-extensions'
à votre fichier build.gradlecompile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
Lorsque vous utilisez Android Studio 2.0 et kotlin 1.0.1-2, vous rencontrez le même problème. Vous ne pouvez pas configurer les extensions kotlin android dans build.gradle de votre projet, vous devez configurer et kotlin android extensions dans chaque module build.gradle comme ceci:
Plus important encore, même grâce au plugin kotlin inclus l'extension android kotlin, vous devez également configurer les extensions kotlin-android-extensions dans bulid.gradle de votre module comme ceci:
Bien sûr, vous pouvez configurer le classpath du plugin kotlin dans build.gradle de votre projet.
la source
ext.kotlin_version
et ajoutezclasspath...
mentionné ci-dessus dans le classement du projet. Et ajoutez les deuxapply...
à l'application gradle.Je ne le trouve pas dans la documentation officielle , mais vous devez appliquer le plugin en ajoutant ce qui suit à votre
build.gradle
fichier:la source
kotlin-1.0.0-beta
vous devez appliquer le plugin, mais je ne trouve pas de source pour cela! Merci!apply plugin: 'kotlin-android-extensions'
devrait être le.Le bloc buildscript contenant la dépendance kotlin-android-extensions doit apparemment se trouver dans le module d'application build.gradle, pas dans celui de niveau supérieur.
la source
J'ai trouvé pourquoi le mien ne fonctionnait pas. Mes blocs ont été égarés et en déplaçant le
buildscript{}
bloc avant les plugins comme suit, je l'ai fait fonctionner:la source
apply plugin: 'kotlin-android-extensions'
besoins à ajouter ... +1ajouter
apply plugin: 'kotlin-android-extensions'
àapp/buildgradle
.si vous l'avez déjà ajouté, essayez de le supprimer et de synchroniser le gradle, lorsque la synchronisation est terminée, puis rajoutez-le et synchronisez à nouveau Gradle. Ce travail pour moi.
la source
La suppression de l'importation suivante a résolu le problème pour moi.
la source
Le problème pour moi était l'ordre dans lequel j'ai appliqué les plugins.
Vous devez appliquer le plugin kotlin-android avant le plugin kotlin-android-extensions
la source
Après avoir appliqué les correctifs mentionnés ci-dessus, j'ai dû redémarrer Android Studio pour le faire fonctionner.
la source
Voilà comment cela a fonctionné pour moi. Lorsque j'ai configuré Kotlin pour la première fois dans Project, j'ai sélectionné la version 1.1.2-3 au lieu de 1.1.2-4 et ajouté la ligne suivante dans le fichier d'application build.gradle
après cela, j'ai synchronisé la construction et cela a fonctionné comme prévu.
la source
J'ai découvert que j'avais un support pour C ++ et Kotlin en même temps, ce qui causait des problèmes de construction.
Lorsque vous démarrez un nouveau projet, assurez-vous que la prise en charge C ++ n'est pas cochée et que la prise en charge de Kotlin est cochée. Cela a résolu le problème pour moi.
la source
Dans mon cas, j'avais mis le code référençant la vue dans un fichier
companion object
. Quel étourdi..la source
Veuillez essayer d'ajouter au bloc de dépendance le suivant:
la source