首页 > 其他分享 >Kotlin实战基础 - 设置点击事件、Activity跳转、传值

Kotlin实战基础 - 设置点击事件、Activity跳转、传值

时间:2023-04-26 16:11:43浏览次数:48  
标签:FirstActivity Kotlin 跳转 Intent Activity intent data 传值

基础过度

尚未完整,遇缺再补-

        • 点击事件
        • Activity 跳转
        • Activity 跳转 + Intent传值

点击事件

点击事件是基础功能,很多年前我写过Java支持的几种四种点击方式

以下我将列出除Button控件外的其他几种kt实现方式,第一、二种常用

布局文件

    <TextView
        android:id="@+id/tv_btn"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:text="测试点击事件"
        android:gravity="center"
       />

匿名内部类(单控件常用)

  findViewById<TextView>(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<TextView>(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属性)

    <TextView
        android:id="@+id/tv_btn"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:text="测试点击事件"
        android:onClick="btnClick"
        android:gravity="center"
       />

若 “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()
        }
    }
}

Activity 跳转

在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传值

如果对于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_OKRESULT_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")
    }
    }
    }

标签:FirstActivity,Kotlin,跳转,Intent,Activity,intent,data,传值
From: https://www.cnblogs.com/cps666/p/17356396.html

相关文章

  • Kotlin基础入门 - for、forEach 循环
    Kotlin基础入门-for、forEach循环liuyong.blog.csdn.net成就一亿技术人!不论身处何方for循环这种操作都随处可见,鉴于大多数Android开发都是从Java转到Kt的,所以我的思路是从Java的使用习惯来讲一些Kt的for、forEach循环方式基础for循环惯性for循环进阶for循......
  • 若依vue框架添加kotlin依赖,实现kotlin和java混合编译
    第一步:在最外部pom.xml文件添加版本号和依赖管理properties添加版本号<kotlin.version>1.4.21</kotlin.version><!--启用kotlin增量编译--><kotlin.compiler.incremental>true</kotlin.compiler.incremental>dependencyManagement添加依赖管理<!-......
  • Nginx配置跳转HTTPS方法汇总
    1、采用nginx的rewrite方法#server{listen80;server_namedev.herlly.com;indexindex.htmlindex.phpindex.htm;access_log/usr/local/nginx/logs/8080-access.logmain;error_log/usr/local/nginx/logs/8080-error.log;rewrite^(.*)$......
  • Activity生命周期
    正如您将要在以下课程中要学习的,有Activity会在图1所示不同状态之间过渡的几种情况。但是,这些状态中只有三种可以是静态。也就是说,Activity只能在三种状态之一下存在很长时间。Resumed:在这种状态下,Activity处于前台,且用户可以与其交互。(有时也称为“运行”状态。)Paused:在这种......
  • IDEA @符 路径跳转
    1.在根目录下新建 alias.config.js文件'usescript'constpath=require('path')functionresolve(dir){returnpath.join(__dirname,dir)}module.exports={resolve:{alias:{'@':resolve('src&#......
  • web(XSS,CSRF,点击劫持,URL跳转)
    搜索被黑网站:关键字:Hackedby搜索引擎语法:Intitle:keyword标题中含有关键词的网页Intext:keyword正文中含有关键词的网页Site:domain在某个域名和子域名下的网页XSS全称:CrossSiteScript               中文名称:跨站脚本危害:盗取用户信息、钓鱼、......
  • Qt 加载 libjpeg 库出现“长跳转已经运行”错误
    继上篇 Qt5.15.0升级至Qt5.15.9遇到的一些错误篇幅有点长,先说解决方法,在编译静态库时加上-qt-libjpeg,编译出libjpeg库后,在项目中使用#pragmacomment链接即可 在我以为升级到Qt5.15.9后,运行没有什么问题时,问题就来了在加载jpeg格式的图片时,出现了“长跳转已经......
  • kotlin语法
    kotlin语法zhuanlan.zhihu.com残枫cps目录收起语法基础kotling语言和JVM虚拟机声明变量和内置数据类型只读变量类型推断编译时常量kotlin反编译后字节码kotlin生成字节码文件之后,交给jvm运行,和java一样工具步骤:tools->kotlin->showtotlinbytecode引用类型range......
  • 在Java代码中更优雅地调用Kotlin
    -Kotlin与Java良好的互操作性是其能够快速普及的原因之一。从Java虽然可以访问Kotlin,但是通过下面这些技巧可以让对Kotlin的访问变得更加友好和地道@JvmStaticKotlin中可以使用objectclass创建单例objectAnalytics{funinit(){...}funsend(event:Event){...}......
  • 对kotlin友好的现代 JSON 库 moshi 基本使用和实战
    对kotlin友好的现代JSON库moshi基本使用和实战blog.csdn.net成就一亿技术人!前言上一篇博客我们聊了下gson在处理kotlindataclass时的一些坑,感兴趣的可以了解一下:gson反序列化成dataclass时的坑总结一下有一下两点属性声明时值不能为null,结果反序列化后值为null,跟预......