Android Kotlin 学习之旅-篇章一

java 项目中引入Kotlin

在app Module下添加引用
apply plugin: 'kotlin-android'

遇到问题

1.The binary version of its metadata is 1.5.1, expected version is 1.1.16 -报错

解决方案:

在项目 Module下修改引用的plugin版本
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30"

2.The minCompileSdk (33) specified in adependency’s AAR metadata(METAINF/com/android/build/gradle/aar-metadata.properties)

在这里插入图片描述

解决方案:
报错原因是引用版本不匹配导致
修改方案一
将下图配置文件中implementation “androidx.core:core-ktx:+”,替换为 implementation "androidx.core:core-ktx:1.7.0"指定匹配版本
在这里插入图片描述
修改方案二

在配置文件中添加如下配置
defaultConfig {
       configurations.all {
           resolutionStrategy { force 'androidx.core:core-ktx:1.7.0' }
       }
       ...
   }

创建第一个Kotlin Activity

Kotiln Activity 和java Activity的区别

class ViewBinding : AppCompatActivity() { // 类的的继承方式的差异
   private lateinit var binding: ViewbindtestActivityBinding; //定义变量不同于java
   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       binding = ViewbindtestActivityBinding.inflate(layoutInflater);

   }
}

activity 跳转区别和使用

activity 无参跳转

  //java activity跳转
  Intent intent = new Intent(this,cls);
  startActivity(intent);
  //Kotlin 跳转 
   var intent: Intent = Intent(this@ViewBinding,MainActivity::class.java);
   startActivity(intent); 
  // Kotlin跳转使用 anko 库更间接
    startActivity<MainActivity>()

关于anKo库的详细使用和介绍可以参考:

activity带参数跳转

//ps:java 带参数跳转不做论述了。只写一下kotlin的
val intent = Intent(this, SomeOtherActivity::class.java)
intent.putExtra("id", 5)
intent.setFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)
//使用anKo库的  ps:anko使用势在必行啊 -- 太间接了
startActivity<MainActivity>("id" to 5,"name" to "song")
//

接受参数

//在java类中接受不做论述。在Kotlin中接口
 val bundle = intent.extras

Kotlin 点击事件

单独点击事件

错误用法 – setOnclickListner无效

   binding.textKotlin2main.setOnClickListener { jumpToMain() }//错误用法

正确用法

 private lateinit var binding: KotlinActivityBinding;
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = KotlinActivityBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
        // binding.textKotlin2main.setOnClickListener { jumpToMain() }//错误用法
         binding.textKotlin2main.setOnClickListener { view -> jumpToMain() }//正确用法
         binding.textKotlin2main.setOnClickListener {  
         var intent: Intent = Intent(this@ViewBinding,MainActivity::class.java);
         startActivity(intent); 
        }//正确用法
    }
    fun jumpToMain() {
        var intent: Intent = Intent(this@ViewBinding,MainActivity::class.java);
        startActivity(intent);
    }

全局实现onClickListenr接口

//
class ViewBinding : AppCompatActivity(), View.OnClickListener {
    private lateinit var binding: KotlinActivityBinding;
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = KotlinActivityBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
        binding.textKotlin2main.setOnClickListener(this)

    }

    override fun onClick(p0: View?) {
        when(p0?.id){
            R.id.text_kotlin_2main -> jumpToMain()
        }
    }

    fun jumpToMain() {
        var intent: Intent = Intent(this@ViewBinding,MainActivity::class.java);
        startActivity(intent);
    }
}

完结语

如上所示已经完成了实现在java项目中创建一个Kotlin 类,并实现点击跳转功能。
下一篇内容计划学习anKo 库的使用 – 代码简洁的核心

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>