Dodawanie Kotlin do istniejącej aplikacji Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Android Studio obsługuje Kotlin i umożliwia dodawanie Kotlin do istniejącego projektu i przekonwertuj kod języka Java na Kotlin. Teraz możesz używać wszystkich narzędzi dostępnych w Android Studio przy użyciu swojego kodu Kotlin, w tym autouzupełnianie, sprawdzanie lint, refaktoryzację, debugowanie i inne.
Jeśli rozpoczynasz nowy projekt i chcesz użyć Kotlina, zapoznaj się z artykułem Utwórz projekt.
Aby dodać Kotlin do projektu, wykonaj te czynności:
Kliknij Plik > Nowy i wybierz jeden z różnych szablonów na Androida, taki jak jako nowy pusty fragment Fragment, jak widać na ilustracji 1. Jeśli nie widzisz listy szablonów w tym menu, najpierw otwórz okno Projekt i wybierz z modułu aplikacji.
Rysunek 1. Wybierz jeden z dostępnych szablonów, np. fragment lub aktywność..
W wyświetlonym kreatorze wybierz Kotlin jako Język źródłowy. Rysunek 2 pokazuje okno Nowa aktywność w Androidzie, w którym utworzyć nową aktywność.
Rysunek 2. Okno Nowa aktywność na Androidzie, w którym jako Język źródłowy wybierz Kotlin.
Kontynuuj korzystanie z kreatora.
Możesz też kliknąć Plik > Nowe > Kotlin File/Class, aby utworzyć podstawowy plik Kotlin. Jeśli nie widzisz tej opcji, otwórz okno Projekt i wybierz katalog java. Okno Nowy plik/klasa Kotlin umożliwia podać nazwę pliku i wybrać jego typ: Plik, Class, Interface, Enum Class lub Object. Wybór, którego dokonasz określa podstawowe rusztowanie utworzone w nowym pliku Kotlin. Jeśli wybierz Class, Android Studio utworzy nowy plik źródłowy Kotlin z podanymi nazwa i definicja klasy pasującej. Jeśli wybierzesz Interfejs, jest zadeklarowana w pliku i tak dalej.
Jeśli po raz pierwszy dodajesz nową klasę lub plik Kotlin do bezpośrednio do projektu (bez szablonów dla Androida), Android Studio wyświetla Ostrzeżenie o tym, że usługa Kotlin nie jest skonfigurowana w projekcie, jak pokazano na rys. 3. Aby skonfigurować Kotlin, kliknij Skonfiguruj w prawym górnym rogu w edytorze lub w alercie dziennika zdarzeń, który pojawi się w prawym dolnym rogu.
Rysunek 3. Android Studio wyświetla okno z ostrzeżeniem, gdy Kotlin nie zostało skonfigurowane w projekcie.
Wybierz opcję skonfigurowania Kotlin dla wszystkich modułów zawierających Kotlin , jak pokazano na rysunku 4:
Rysunek 4. Wybierz, aby skonfigurować Kotlin dla wszystkich modułów zawierających Kod Kotlina.
Gdy klikniesz OK, Android Studio doda Kotlin do ścieżki zajęć projektu. stosuje wtyczkę Kotlin na Androida do każdego modułu zawierającego pliki Kotlin. Twoje pliki build.gradle powinny wyglądać podobnie do tych poniżej:
// 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")}
Organizacja źródłowa
Domyślnie nowe pliki Kotlin są zapisywane w usłudze src/main/java/, co ułatwia aby zobaczyć zarówno pliki Kotlin, jak i Java w jednym miejscu. Jeśli wolisz oddzielić plików Kotlin z plików Java, pliki Kotlin możesz umieścić w src/main/kotlin/. Jeśli to zrobisz, musisz też dodać atrybut w katalogu sourceSets Jak poniżej:
Aby przekonwertować kod Java na Kotlin, otwórz plik Java w Android Studio i wybierz Kod > Przekonwertuj plik Java na plik Kotlin. Możesz też utworzyć nowy projekt Kotlin (File > New > Kotlin File/Class (Plik > Nowy > Plik/klasa Kotlin))), a następnie wklej kod w języku Java ten plik. Android Studio wyświetli prośbę i zaproponuje konwersję kodu jak widać na ilustracji 5. Kliknij Tak, aby przekonwertować dane. Opcjonalnie możesz zaznacz opcję Nie pokazuj tego okna następnym razem, która spowoduje przyszłe konwersje. automatyczne.
Rysunek 5. Android Studio umożliwia konwersję kodu Java na Kotlin.
Konwersja kodu i dopuszczalność wartości null
Proces konwersji w Android Studio tworzy odpowiedni kod Kotlin który kompiluje i uruchamia. Prawdopodobnie jednak trzeba będzie w ten sposób do przekonwertowanego kodu. Możesz na przykład określić, jak przekonwertowany kod obsługuje typy dopuszczone do wartości null.
W Androidzie często opóźnia się inicjalizację obiektów View i innych dopóki fragment lub działanie, do których są dołączone, nie osiągnie odpowiedni stan cyklu życia. Możesz na przykład mieć odniesienie do w jednym z fragmentów, jak widać w tym fragmencie:
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){...}});}}
Zmienna przycisku ma wartość null, jednak ze względów praktycznych W tym przykładzie nie powinna mieć ona wartości null. Ponieważ jednak jego wartość nie jest jest przypisany w punkcie budowy, wygenerowany kod Kotlin traktuje jako Button jako typ do wartości null i do wyodrębniania przycisku używa niepustego operatora asercji. podczas dodawania odbiornika kliknięć, jak pokazano poniżej:
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{}}}
Ta konwersja jest mniej idealna w tym przypadku niż użycie funkcji lateinit, ponieważ są zmuszeni do wyodrębnienia odwołania do przycisku za pomocą asercji niezerowej lub atrybutu Secure-call. w każdym miejscu, w którym uzyskano dostęp.
W innych przypadkach, gdzie null jest prawidłowym przypisaniem zmiennej na podstawie przypadku użycia aplikacji, z użyciem operatora bezpiecznego wywołania (?.) z zakończeniem elvis (?:) może być trafniejszym sposobem bezpiecznego wyodrębniania do wartości null lub wymuszać na rozsądną, niezerową wartość domyślną. Android Studio, nie ma wystarczających informacji, aby to ustalić konwersji. Domyślnie jest to asercja niepusta, musisz jednak i w razie potrzeby dostosuj przekonwertowany kod.
Więcej informacji
Aby dowiedzieć się więcej o używaniu w projekcie zarówno kodu Kotlin, jak i kodu Java, zobacz Wywołuję kod Java z Kotlin.
Informacje na temat idiomatycznych kodów Kotlin w istniejących interfejsach API Androida znajdziesz tutaj: Android KTX.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[]]