## **開始在Android上使用Kotlin**
在Android Studio 3.0中全面支持Kotlin,所以創建一個全新包含Kotlin文件的項目,向你當前的項目中添加Kotlin文件,將Java語言代碼轉換為Kotlin非常簡單。你可以在你的Kotlin代碼上,使用Andorid Studio現存所有的工具,例如自動補齊,lint檢查,重構,調試等等。
這章節教你如何在Android Studio中使用Kotlin。更多關于Kotlin語言的信息,查看Resources to Learn Kotiln。
### **使用Kotlin創建一個新的項目**
***
在新項目中使用Kotlin,僅僅要求在創建新項目的引導中一個額外的點擊:
1. 在Android Studio中,點擊File>New>New Project。或者如果你僅僅打開了Android Studio,看見了Welcome to Android Studio窗口,點擊Start a new Android Studio project。
2. 在一個窗口,選中Include Kotlin support。這是唯一的不同。
3. 點擊Next和繼續完成向導,直到你操作完畢。

當你選擇一個Activity模板的時候,它將會提供Kotlin代碼。現在,僅僅一些Phone and Table類型的模板提供“地道”的Kotlin代碼。其余的則從Jav模板自動轉換成Kotlin—你仍然可以得到Kotlin代碼,但是一些代碼可能沒有使用Kotlin的最好語言功能。
和Java文件一樣,Kotlin文件被保存在src/main/java/目錄下。
### 向已有的項目添加Kotlin
***
如果你向現有的項目中添加Kotlin代碼,只需要點擊File>New并且選擇各種Andorid模板的一個。如果你沒有在這個菜單中看見模板列表,首先打開Project窗口,然后選擇你的app模塊。

在出現的向導中,選擇Kotlin為Source language。

持續完成向導,直到你操作完畢。
或者,你可以點擊File>New>Kotlin File/Class來創建一個基本文件。這個New Kotlin File/Class窗口提供了各種文件類型的選擇,但是你選著哪一個不重要,因為Kotlin會自動改變文件類型,如果你稍后改變了聲明類型。
默認的,新的Kotlin文件被保存在src/main/java/。你可能很容易在一個目錄下同時看見Kotlin和Java文件。但是如果你更喜歡從你的Java文件中分開Kotlin文件,你可以將Kotlin文件放在/main/kotlin/目錄下替代。如果你這樣做了,然后你需要在你的sourceSets配置中包含這個目錄。
~~~
android {
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
~~~
### **將現有的Java代碼轉換成Kotlin代碼**
***
在Andorid Studio 3.0中,打開一個Java文件,然后選擇Code>Convert Java File to Kotlin File。
或者,創建一個新的Kotlin文件(File>New>Kotlin File/Class),然后粘貼你的Java代碼到這個文件中——當被提示的時候,點擊Yes來將代碼轉換成Kotlin。你可以選擇Don't show this dialog next time,它會使得將Java代碼片段放到你的Kotlin文件中更簡單。

### **用Kotlin調用Android APIs**
***
Kotlin提供了完整調用Java語言的操作,所以調動Android APIs看起來非常像Java代碼。除非你現在能使用Kotlin的語法功能兼容這些方法調用。
這里有幾個例子,和用Java語言實現的相同代碼對比,它們看起來像使用Kotlin調用Andorid APIs。
**Declare Activity in Kotlin**
~~~
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity)
}
}
~~~
**Declare Activity in Java**
~~~
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
}
}
~~~
**On-click listener in Kotlin**
~~~
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
...
}
~~~
**On-click listener in Java**
~~~
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
...
}
});
Item click listener in Kotlinprivate val mOnNavigationItemSelectedListener
= BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.navigation_home -> {
mTextMessage.setText(R.string.title_home)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_dashboard -> {
mTextMessage.setText(R.string.title_dashboard)
return@OnNavigationItemSelectedListener true
}
}
false
}
~~~
**Item click listener in Java**
~~~
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
mTextMessage.setText(R.string.title_home);
return true;
case R.id.navigation_dashboard:
mTextMessage.setText(R.string.title_dashboard);
return true;
}
return false;
}
};
~~~
想學習更多關于Kotlin語言的知識,請查閱Resources to Learn Kotlin。
- 開發
- Kotlin和Android
- 開始使用Kotlin
- Kotlin在Android中FAQ
- 學習Kotlin的資源
- 參考
- 綜述
- Kotlin適合于Android
- 基本介紹
- 基本語法
- Idioms
- 基礎
- 基本類型
- 包
- 控制流
- 返回和跳轉
- 類和對象
- 類和繼承
- 屬性和字段
- 接口
- 可見性修飾符
- 擴展
- 數據類
- 密封類
- 泛型
- Nested Classes
- 枚舉類
- Objects
- Delegation
- Delegated Properties
- 函數和Lambda
- 函數
- Lambda
- 內聯函數
- Coroutines
- 其它
- 解構聲明
- 集合
- 范圍
- 類型檢查和轉換
- This表達式
- 相等
- 操作符重載
- 空安全
- 異常
- 注解
- 反射
- 類型安全構建器
- 類型別名
- 核心庫
- 標準庫
- Java互操作
- 在Kotlin中調用Java
- 在Java中調用Kotlin
- 工具
- Documenting Kotlin Code
- Using Kapt
- Using Gradle
- Compiler plugins
- 學習指南
- Getting started
- Getting Started With IDEA
- Working with the Command Line Compiler
- Konas
- Android
- Getting Started With Android Development
- Kotlin Android Extensions
- Android Frameworks
- 書籍
- 更多資源