1.创建Kotlin --->Hello World
2.使用Android Studio 3.0 版本.
module,kotlin版本,点击All完成设置:
3.创建一按键,做一个吐司显示
package kotion.com.kotiondome
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import kotion.com.kotiondome.base.BaseActivity
/**
主Activity 页面
-
: 这表示 继承什么类的意思
*/
class MainActivity : BaseActivity() {/**
- var定义属性,是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和java中声明变量的方式一样。
- btn: 指的是变量名称 : Button -->指是变量类型, 值可以为null , ?是可以为空.
/
var btn: Button? = null
/* - varl定义属性. 是指常量是一个只读变量,这种声明变量的方式相当于java中的final变量。一个val创建的时候必须初始化,因为以后不能被改变
- var mag =" 你好Kotilon" 可以这样写 这样是可以自动识别数据类型,
*/
val mag: String = "你好Kotilon"
/**
- override 这是关键字, 在重写父类的方法的时候,必须使用这个关键字,
- fun 这是指关键字,
*/
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initView()
}
/**
* 这是自己定义的一个方法
*/
private fun initView() {
/**
*:获取Button按钮实例,由于声明btn时指定了对象类型,因此这里需使用as关键强转为Button对象,未声明类型则无需强转
* 按钮设置监听,区别于java不需要创建匿名内部类,直接使用lambda完成,!!表示对象非空否则抛出异常。
* kotlin的安全性特性能严格控制NullPointerException的发生,使用一个对象时,
* 必须有安全操作符!!或?来指明一个对象是否非空或可能为空,实例代码:
* as关键字用法,强转
* @符号用法:this@XXX,return@XXX 返回值;
*/
btn = findViewById<Button>(R.id.mButton) as Button
btn!!.setOnClickListener {
Toast.makeText(MainActivity@ this, mag, Toast.LENGTH_SHORT)
}
btn!!.setText("点击事件") //这个是btn 这个控件非空.
btn?.setText("点击事件") //这个是指btn为空时不执行setText方法,成功避免空指针异常的发生
btn ?: Toast.makeText(this@MainActivity, mag, Toast.LENGTH_SHORT).show() //btn为空弹出吐司提示
}
/**
* 带有传参的方法, 方法名称在前面, 方法类型在后面
*/
private fun IntAdd(a: Int, b: Int) {
}
/**
* 这是指 返回String类型的数据, 这个数据是a+b;
*/
private fun ToString(a: String, b: String): String = a + b
/**
* 这是第二种写法
*/
private fun OneString(a: String, b: String): String {
return a + b
}
/**
* 无数返回值, 这个Unit跟Java里面 void 意思是一样的
*/
private fun TwoString(a: Int, b: Int): Unit {}
}