Aggiungi Kotlin a un'app esistente
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
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 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.
Figura 3. Android Studio mostra una finestra di dialogo di avviso quando Kotlin
non è configurata per il tuo progetto.
Scegli l'opzione per configurare Kotlin per Tutti i moduli contenenti Kotlin
quando richiesto, come mostrato nella figura 4:
Figura 4. Scegli di configurare Kotlin per tutti i moduli che contengono
codice Kotlin.
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:
// Inside each module using kotlinplugins{...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 kotlinplugins{...kotlin("android")}...valkotlin_version:StringbyrootProject.extradependencies{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:
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.
Figura 5. Android Studio può convertire il codice Java in Kotlin.
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:
publicclassJavaFragmentextendsFragment{// Null until onCreateView.privateButtonbutton;@OverridepublicViewonCreateView(@NonNullLayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){Viewroot=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);returnroot;}@OverridepublicvoidonViewCreated(@NonNullViewview,@NullableBundlesavedInstanceState){super.onViewCreated(view,savedInstanceState);// Not null at this point of time when onViewCreated runsbutton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){...}});}}
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:
classJavaFragment:Fragment(){// Null until onCreateView.privatevarbutton:Button? =nulloverridefunonCreateView(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)...}overridefunonViewCreated(view:View,savedInstanceState:Bundle?){super.onViewCreated(view,savedInstanceState)// Not null at the point of time when onViewCreated fires // but force unwrapped nonethelessbutton!!.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.
Per informazioni sui wrapper Kotlin idiomatici per le API Android esistenti, consulta
Android KTX.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[]]