1.传送配对字段数据

1.在Android中,我们用java代码写activity跳转的时候代码如下:

Intent intent = new Intent(MainActivity.this, OtherActivity.class);
startActivity(intent)

2.对应的kotlin代码如下:

val intent = Intent(this@MainActivity, OtherActivity::class.java)
startActivity(intent)
  • 对比之下,这里的kotlin代码与java代码主要有两点不同之处 *:
  1. 在类内部指代自身的关键字,Java的完整写法是 类名.this,而kotlin的完整写法是this@类名,二者也都可以简写为this
  2. 获取某个类的class对象,Java的写法是类名.class,而 kotlin的写法是类名::class.java,一看便知道带有很重的java风格

3.正宗的kotlin跳转写法如下:

startActivity<OtherActivity>()

究其原因,乃是Anko库利用kotlin的扩展函数给context类新增类名为startActivity的新方法,故而使用简化版的写法之前,必须先导入Anko库的指定代码,即在kt文件头部添加下面一行导入语句:
import org.jetbrains.anko.startActivity
除此之外,还需要在模块的bugld.gradledeperdencies节点中补充下述的anko-common包编译配置
compile "org.jetbrains.anko:anko-common:$anko_version"

4.intent传递参数对比

  • java代码如下:
Intent intent =  new Intent(this,ActSecondActivity.class);
intent.putExtra("request_time",DateUtil.getNowTime());
intent.putExtra("request_content","这是请求内容");
startActivity(intent);
  • 使用kotli结合anko的简化写法如下:
startActivity<ActSecondActivity>("request_time" to DateUtil.getNowTime(), "request_content" to "这是请求内容")
  • 是不是很简洁,但是还是不太美观,再次进行修改代码方式如下
startActivity<ActSecondActivity>(Pair("request_time", DateUtil.getNowTime()),Pair("request_content" , "这是请求内容"))

实际上与上面写法一致

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容