不论是新手,还是从Java过度的老手,都需要简单看一下Kt在使用上的语法不同;当然如果有经验的话,分分钟过度完成;如果是新手的话,也完全不影响你学习。加油ing~
今年的目标之一,清空草稿箱Blog,该篇就是堆积了一年多的一篇Kotlin基础过度Blog...
基础过度
尚未完整,遇缺再补
点击事件是基础功能,很多年前我写过Java支持的几种四种点击方式
以下我将列出除Button控件外的其他几种kt实现方式,第一、二种常用
布局文件
匿名内部类(单控件常用)
findViewById(R.id.tv_btn).setOnClickListener(object :OnClickListener{override fun onClick(p0: View?) {Toast.makeText(this@MainActivity, "点击了",Toast.LENGTH_SHORT).show()}})
实现 View.OnClickListener接口
的onClick
方法(多控件常用)
class MainActivity : AppCompatActivity(), View.OnClickListener {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)findViewById(R.id.tv_btn).setOnClickListener(this)}override fun onClick(p0: View?) {when(p0?.id){R.id.tv_btn -> Toast.makeText(this, "点击了", Toast.LENGTH_SHORT).show()}}
xml内帮控件添加 onClick属性
,这个属性代表的是一个方法,需要在对应activity或fragment中添加该方法
布局文件(添加onClick属性)
若 “btnClick“ 方法报红,可通过alter+enter提示进行修改(未遇到)
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}fun btnClick(view: View) {when (view.id) {R.id.tv_btn -> Toast.makeText(this@MainActivity, "点击了", Toast.LENGTH_SHORT).show()}}
}
在Kt中有 ::class 、class.java、javaClass、javaClass.kotlin
等声明方式,意义有所不同,等以后有时间我再补充记录一篇
常用方式 - 1
val intent = Intent(context, SecondActivity::class.java)
startActivity(intent)
常用方式 - 2
val intent = Intent(context, SecondActivity().javaClass)
startActivity(intent)
如果对于Activity传值不太了解的同学,可以去我早期写的 那些年我错过的Intent基础 学习学习~
场景:A页面(FirstActivity )传值到 B页面(SecondActivity)
FirstActivity 不需要回传数据就用 startActivity
val intent = Intent(this, FirstActivity::class.java)intent.putExtra("main_data", "data_from_main")startActivity(intent)
场景:A页面(FirstActivity )传值到 B页面(SecondActivity),当B页面关闭时传值回A页面
FirstActivity 需要回传数据就用 startActivityForResult
,请求code(100) 自行定义,只要唯一就行
val intent = Intent(this, FirstActivity::class.java)intent.putExtra("main_data", "data_from_main")startActivityForResult(intent , 100)
SecondActivity
在 onCreate()
中接收传过来的数据
val data = intent.getStringExtra("main_data")
在退出时,回传数据给 FirstActivity
val intent1 = Intent()intent1.putExtra("return_data", "data_from_first")setResult(RESULT_OK, intent1)
A页面重写 onActivityResult()
方法,接收回传数据
requestCode(请求码)
: startActivityForResult
所传参数;resultCode(响应码)
: FirstActivity 回传时用的参数,一般是 RESULT_OK
或 RESULT_CANCELED
;override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)when(requestCode){100 -> if (resultCode == RESULT_OK){val returnData = data?.getStringExtra("return_data")}}}