kotlin初窥之Kotlin Android Extensions

  之前在上篇kotlin配置中我曾说道kotlin有一个强大的功能:

 
 
  1. 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()也给省略了。当然还有很多的,就不在多说了

 

   

     


猜你喜欢

转载自blog.csdn.net/My_Jack/article/details/72675683