Android Studio offre supporto completo per Kotlin, consentendoti di aggiungere i file Kotlin nel progetto esistente e converti il codice del linguaggio Java in Kotlin. Dopodiché potrai usare tutti gli strumenti di Android Studio con il tuo codice Kotlin, tra cui completamento automatico, controllo lint, refactoring, debug e altro ancora.
Se stai iniziando un nuovo progetto e vuoi utilizzare Kotlin, consulta Crea un progetto.
Per alcuni esempi, dai un'occhiata alla nostra Esempi di codice di Kotlin.
Aggiungi Kotlin a un progetto esistente
Per aggiungere Kotlin al tuo progetto, segui questi passaggi:
Fai clic su File > Nuovo e scegli uno dei vari modelli per Android, ad esempio come un nuovo Frammento vuoto, come mostrato nella Figura 1. Se non vedi l'elenco di modelli in questo menu, apri innanzitutto la finestra Progetto e seleziona dell'app.
Figura 1. Scegli tra i modelli disponibili, ad esempio il frammento o attività. Nella procedura guidata visualizzata, scegli Kotlin come Lingua di origine. La Figura 2 mostra la finestra di dialogo Nuova attività Android quando vuoi crea una nuova attività.
Figura 2. Una finestra di dialogo Nuova attività Android in cui puoi scegli Kotlin come Lingua di origine. Continua con la procedura guidata.
In alternativa, puoi fare clic su File > Nuovo > file/classe Kotlin per creare un file Kotlin di base. Se non vedi questa opzione, apri la finestra Progetto e seleziona la directory java. La finestra Nuovo file/classe Kotlin ti consente di definiscono il nome del file e offre diverse opzioni per il tipo di file: File, Class, Interface, Enum Class oppure Object. La scelta che fai determina lo scaffolding di base creato per te nel nuovo file Kotlin. Se scegli Class, Android Studio crea un nuovo file sorgente Kotlin con e una definizione di classe corrispondente. Se scegli Interfaccia, viene eseguita un'interfaccia viene dichiarato nel file e così via.
Se è la prima volta che aggiungi una nuova classe o un nuovo file Kotlin al tuo progetto direttamente (non utilizzando i modelli Android), Android Studio mostra avviso che Kotlin non è configurato nel progetto, come mostrato nella figura 3. Configura Kotlin facendo clic su Configura nell'angolo in alto a destra della pagina. nell'editor o nell'avviso del log eventi che appare nell'angolo in basso a destra.
![che ti chiede di configurare Kotlin per il tuo
progetto](https://developer.android.com/static/images/kotlin/configure-kotlin.png?authuser=0000&hl=it)
Scegli l'opzione per configurare Kotlin per Tutti i moduli contenenti Kotlin quando richiesto, come mostrato nella figura 4:
![scegli di configurare Kotlin per tutti i moduli che contengono codice Kotlin](https://developer.android.com/static/images/kotlin/all-modules.png?authuser=0000&hl=it)
Dopo aver fatto clic su OK, Android Studio aggiunge Kotlin al classpath del progetto e
applica il plug-in Kotlin per Android a ogni modulo che contiene file Kotlin.
I tuoi file build.gradle
dovrebbero avere un aspetto simile agli esempi riportati di seguito:
Alla moda
// Project build.gradle file. buildscript { ext.kotlin_version = '1.4.10' ... dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
Kotlin
// Project build.gradle.kts file. buildscript { extra["kotlin_version"] = "1.4.10" ... dependencies { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") } }
Alla moda
// Inside each module using kotlin plugins { ... id 'kotlin-android' } ... dependencies { implementation 'androidx.core:core-ktx:1.3.2' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" }
Kotlin
// Inside each module using kotlin plugins { ... kotlin("android") } ... val kotlin_version: String by rootProject.extra dependencies { implementation("androidx.core:core-ktx:1.3.2") implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") }
Organizzazione di origine
Per impostazione predefinita, i nuovi file Kotlin vengono salvati in src/main/java/
, il che semplifica la procedura
per vedere i file Kotlin e Java in un'unica posizione. Se preferisci separare
i file Kotlin dai file Java, puoi mettere i file Kotlin in
src/main/kotlin/
in alternativa. Se lo fai, dovrai includere anche questo
nella directory sourceSets
dell'applicazione, come illustrato di seguito:
Alla moda
android { sourceSets { main.java.srcDirs += 'src/main/kotlin' } }
Kotlin
android { sourceSets { getByName("main") { java.srcDir("src/main/kotlin") } } }
Converti il codice Java esistente in codice Kotlin
Per convertire il codice Java in Kotlin, apri il file Java in Android Studio e seleziona Codice > Converti il file Java in un file Kotlin. In alternativa, crea un nuovo Kotlin (File > New > File/Class Kotlin) e incolla il codice Java in quel file. Android Studio mostra una richiesta di conversione del codice a Kotlin, come mostrato nella Figura 5. Fai clic su Sì per convertire. In via facoltativa, Seleziona Non mostrare questa finestra di dialogo la prossima volta per eseguire conversioni future automatica.
![scegli di configurare Kotlin per tutti i moduli che contengono codice Kotlin](https://developer.android.com/static/images/kotlin/convert-code.png?authuser=0000&hl=it)
Conversione di codice e possibilità di usare i valori null
Il processo di conversione di Android Studio produce un codice Kotlin funzionalmente equivalente che esegue la compilazione e l'esecuzione. Tuttavia, è probabile che tu debba apportare ulteriori ottimizzazioni al codice convertito. Ad esempio, potresti voler perfezionare il modo il codice convertito gestisce i tipi nulli.
In Android, è comune ritardare l'inizializzazione degli oggetti View
e di altri
componenti finché il frammento o l'attività a cui sono collegati non raggiungono
stato del ciclo di vita appropriato. Ad esempio, potresti fare riferimento a una
in uno dei frammenti, come illustrato nello snippet seguente:
public class JavaFragment extends Fragment {
// Null until onCreateView.
private Button button;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_content, container,false);
// Get a reference to the button in the view, only after the root view is inflated.
button = root.findViewById(R.id.button);
return root;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Not null at this point of time when onViewCreated runs
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
}
});
}
}
Anche se la variabile pulsante può essere impostata come null, in pratica
non deve mai essere nullo quando utilizzato in questo esempio. Tuttavia, poiché il suo valore non è
assegnato al punto di costruzione, il codice Kotlin generato tratta Button
come tipo null e utilizza l'operatore di asserzione "non null" per annullare il wrapping del pulsante
quando aggiungi un listener di clic, come mostrato di seguito:
class JavaFragment : Fragment() {
// Null until onCreateView.
private var button: Button? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
...
// Get a reference to the button in the view, only after the root view is inflated.
button = root.findViewById(R.id.button)
...
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Not null at the point of time when onViewCreated fires
// but force unwrapped nonetheless
button!!.setOnClickListener { }
}
}
In questo caso, la conversione è meno ideale rispetto all'utilizzo di lateinit
, perché
Devi eseguire l'unwrapping del riferimento al pulsante con un'asserzione non null o una chiamata sicura
in ogni luogo a cui si accede.
In altri casi, dove null
è un'assegnazione di variabile valida in base a
al caso d'uso di un'applicazione, utilizzando un operatore di chiamata sicura (?.) con un server elvis in fase di terminazione
dell'operatore (?:) può essere un modo più appropriato per
null o forzato a un valore predefinito sensibile non null. Android Studio
non dispone di informazioni sufficienti per effettuare questa valutazione durante
processo di conversione. Sebbene per impostazione predefinita sia l'asserzione non null, devi
e modificare il codice convertito in base alle esigenze.
Ulteriori informazioni
Per ulteriori informazioni sull'utilizzo di codice Kotlin e Java nel tuo progetto, vedi Chiamata al codice Java da Kotlin.
Per saperne di più sull'utilizzo di Kotlin in scenari aziendali, consulta Adozione di Kotlin per team di grandi dimensioni.
Per informazioni sui wrapper Kotlin idiomatici per le API Android esistenti, consulta Android KTX.