Kotlin学习一
今天主要讲讲 kotlin 的简单配置,以及在配置中会遇到的问题
一 kotlin配置
最新的Androidstudio已经集成了 kotlin,因此不需要做特别的配置,现在以新建一个kotlin项目做简单讲解
1.新建一个名为 KtDemo的项目,点击next
1.png
2.直接点击next
image.png
3.选择 empty,继续下一步
image.png
4.点击finish
image.png
5,进入界面后是 Java 代码,如下图
image.png
6.将Java代码转成 kotlin,
image.png
7.此时界面代码变成kotlin,但还需要对kotlin做些基本的配置,试着在代码中敲一个回车键,会出现如下图所示
image.png
8.点击右上角 cinfigure,出现下图所示,kotlin版本选择最新版本,然后点击ok
image.png
9,点击ok后界面进入 app module 的 build.gradle 配置界面
image.png
10,在 apply plugin: 'kotlin-android' 下方导入新代码
//kotlin扩展块,方便初始化控件,类似butterknife的作用
apply plugin: 'kotlin-android-extensions'
导入后,显示如下图
image.png
此导入是为了方便控件初始化,类似butterknife一样简化初始控件代码
11.再看下MainActivity的layout文件 activity_main.xml,很普通,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ktdemo.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="awke"/>
</android.support.constraint.ConstraintLayout>
12,在MainActivity中导入方便初始化控件的包:
import kotlinx.android.synthetic.main.activity_main.*
其中 activity_main 为当前activity所加载的xml文件名,若有一个activity文件CodeActivity,其对应的布局文件为 activity_code,则需要在 CodeActivity的头部导入
import kotlinx.android.synthetic.main.activity_code.*
此处MainActivity的导入截图如下:
image.png
别忘了要rebuild一下项目
13.然后写一个简单的按钮点击土司的功能,MainActivity代码如下:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn2.setOnClickListener(this)
}
override fun onClick(v: View?) {
when(v?.id){
R.id.btn2 ->Toast.makeText(this,"wo",Toast.LENGTH_LONG).show()
}
}
14.下面说下“点击右上角 cinfigure,出现下图所示,kotlin版本选择最新版本,”为什么要选择比较高的版本,因为如果版本级别较低(如我当时选择的默认版本为 1.0.0),然后在编译的时候出现以下error:
Error:(2, 0) Unable to find method 'org.gradle.api.internal.file.DefaultSourceDirectorySet.<init>(Ljava/lang/String;Lorg/gradle/api/internal/file/FileResolver;)V'.
Possible causes for this unexpected error include:<ul><li>Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
Stop Gradle build processes (requires restart)
Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.
In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
我做了以下几个处理:
1.重新下载,但是不行
2.重启studio,还是不行
3.最后一条不是提示版本不匹配吗?于是我下载了更新的 gradle,配置到项目中,但是还是报错
后来发现原来是 kotlin 版本过低,kotlin版本显示在 project的build.gradle中:
image.png
然后我将 kotlin版本改为1.1.51,重新编译运行就ok了。
15。最后看看运行的结果:
12.gif
ok,今天就讲到这里,谢谢