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."],[],[]]