Android Kotlin 学习之旅-篇章一
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
二维码