您的位置:首页 > 移动开发 > Android开发

kotlin初窥之Kotlin Android Extensions

2017-05-24 13:54 211 查看
 
之前在上篇kotlin配置中我曾说道kotlin有一个强大的功能:

apply plugin: 'kotlin-android-extensions'
作为Android开发人员,我们在进行控件使用时,首先要声明和查询这个控件是什么类型?在哪里?

        类型就是我要知道我这是textview还是button还是edittext呢,还是说是LinearLayout呢?通常我们都是要先声明出来。 例如: private Button mBtnLogin;
在哪里?那就是要找到这个控件了,不能我这有一百个button全都要吧,那还不代码界大乱啊。之前可能就要findViewById()方法来找到我们要操作的button了,当然现在已经有许多的注解简化了这一流程。但是kotlin告诉你,这还不行你这还不够简洁不够方便,那么kotlin是做到了什么效果呢?那就是你不在需要多写那一行声明View了,也不用在寻找你的View的ID了!我就什么什么狗了,这是要干嘛。给出以下代码看一下:

     

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_login2.*

class LoginActivity : AppCompatActivity() {
//    private var btn_login: Button? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login2)
//        btn_login= findViewById(R.id.btn_login) as Button?
btn_login!!.setOnClickListener { login() }
}

fun login(){
btn_login!!.text = "登陆中"
Toast.makeText(this@LoginActivity,"登录成功",Toast.LENGTH_SHORT).show()
}

}


      首先先说下上面这个页面的布局上有一个Button,你会发现我已经把声明Button和findViewById都已经给注释掉了 。那么按照以前这是肯定跑不通的,估计要闪退了。但是在kotlin下完美跑通。

 Kotlin Android Extensions are another Kotlin plugin that is included in the regular one, and that will allow
to recover views from Activities, Fragments y Views in an amazing seamless way.


     也就是说这个插件完美的连接了视图xml和activity。

     就在加入apply plugin:'kotlin-android-extensions'后只要在导入import kotlin.android.synthetic.main.activity_login2.*,这就解决了。把你在.xml里定义的控件的ID直接拿来用就行了,既当了控件View又当了ID,真的是身兼多职啊。(当然一定要一样啊),这是要把映射做到极致啊

    还有就是发现没,写了这么一段代码  btn_login.text="登陆中", 这就又是kotlin的又一大改进,给view设置值,之前的setText()也给省略了。当然还有很多的,就不在多说了

 

   

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息